第1章Python, 那些不得不知道的事儿 1
1.1编程语言的发展 2
1.2Python的起源 3
1.3你问我答了解Python 3
1.3.1编程语言那么多,为什么选择Python 3
1.3.2 Python解释器的发行版本 5
1.3.3 Python的应用 6
1.3.4正视Python的不足 6
1.3.5如何学好Python 6
1.4 Python解释器的下载安装 7
1.4.1 Python for Windows 7
1.4.2 Python for Linux 12
1.4.3 Python for Mac OS 18
1.4.4让人爱不释手的pip 20
1.5工欲善其事,必先利其器——Python IDE的选择与安装 21
1.5.1 PyCharm的下载与安装 22
1.5.2 PyCharm的使用 27
1.6习题 28
第2章Python基础 29
2.1 hello world 30
2.1.1文本式编程 30
2.1.2命令行交互式编程 31
2.2 PEP8代码风格指南 32
2.2.1注释 32
2.2.2缩进 33
2.2.3单引号与双引号 33
2.2.4逻辑行与物理行 33
2.3变量与内存管理 34
2.3.1变量赋值 34
2.3.2内存管理 36
2.4 print and input 38
2.5运算符与表达式 39
2.5.1算数运算符 40
2.5.2比较运算符 40
2.5.3赋值运算符 41
2.5.4逻辑运算符 42
2.5.5成员运算符 43
2.5.6身份运算符 43
2.5.7位运算符 44
2.5.8运算符的优先级 44
2.6流程控制语句 45
2.6.1条件语句 46
2.6.2循环之while循环 49
2.6.3循环之for循环 50
2.6.4 break语句 51
2.6.5 continue语句 51
2.6.6 pass语句 52
2.7习题 52
第3章 数据类型 54
3.1 Python基础数据类型 55
3.1.1整型 55
3.1.2浮点型 56
3.1.3布尔型 58
3.1.4复数 62
3.2字符串 62
3.2.1字符串的创建 63
3.2.2常用字符串方法 64
3.2.3字符串类型与类型的转换 75
3.2.4最后,善用help 76
3.3容易走火入魔的字符编码 77
3.3.1字符编码的发展 77
3.3.2字符编码之Python 79
3.4列表 82
3.4.1列表的基本操作 83
3.4.2列表的常用方法 86
3.4.3列表的嵌套 90
3.5元组 91
3.5.1元组的基本操作 91
3.5.2元组的嵌套 95
3.6字典 97
3.6.1字典的基本操作 98
3.6.2字典的其他操作 100
3.6.3字典的嵌套 107
3.7集合 108
3.7.1集合的常用操作和方法 108
3.7.2集合的运算 110
3.7.3集合的嵌套 114
3.8推导式、三元表达式与深、浅拷贝 115
3.8.1一行代码解决的事情 115
3.8.2三元表达式 117
3.8.3深、浅拷贝那些事 117
3.9习题 120
第4章函数 123
4.1函数基础 124
4.1.1函数的定义与调用 124
4.1.2函数的返回值 126
4.1.3函数的参数 127
4.1.4函数对象 131
4.1.5命名空间与作用域 133
4.1.6嵌套函数与嵌套作用域 136
4.1.7闭包函数 140
4.2装饰器 142
4.2.1开放封闭原则 144
4.2.2无参装饰器 145
4.2.3有参装饰器 146
4.2.4多装饰器 149
4.3迭代器 153
4.3.1一个Shift键引发的“血案” 153
4.3.2迭代器协议版本差异 157
4.3.3 for循环的本质 160
4.4生成器 161
4.4.1生成器函数 161
4.4.2生成器表达式VS列表解析式 163
4.5递归与面向过程编程 164
4.5.1递归 164
4.5.2面向过程编程 166
4.6内置函数 168
4.6.1让人又爱又恨的lambda 168
4.6.2映射函数:map 170
4.6.3拉链函数:zip 171
4.6.4过滤函数:filter 173
4.6.5累积函数:reduce 174
4.6.6偏函数:partial 175
4.6.7其他内置函数 177
4.7文件操作 183
4.7.1打开文件 183
4.7.2文件常用方法 184
4.7.3手动挡关闭文件 186
4.7.4自动挡关闭文件 186
4.7.5 f是什么 187
4.8习题 188
第5章 模块 190
5.1初识模块 191
5.2常用模块 191
5.2.1 time 191
5.2.2 collections 197
5.2.3 functools 204
5.2.4 random 207
5.2.5序列化模块 208
5.2.6 re 213
5.2.7 os 216
5.3模块探索 221
5.4模块与包 231
5.5习题 235
第6章 面向对象 237
楔子:少年,你对盖伦一无所知 238
6.1类与对象 240
6.1.1类的创建 240
6.1.2实例化 241
6.2继承 246
6.2.1命名空间 246
6.2.2单继承 248
6.2.3多继承 253
6.2.4接口类 254
6.2.5抽象类 257
6.2.6新式类与经典类 258
6.2.7 C3算法 260
6.2.8 issubclass和isinstance 268
6.3组合 269
6.4封装 270
6.5多态 274
6.6装饰器函数 277
6.6.1@property 277
6.6.2@classmethod 281
6.6.3@staticmethod 282
6.7反射 283
6.7.1什么是反射 283
6.7.2反射的应用 286
6.8函数VS方法 289
6.9类中的内置方法 290
6.9.1对象的“诞生”与“死亡” 290
6.9.2_len_ 293
6.9.3_ eq_ 293
6.9.4字符串格式化三剑客 294
6.9.5 item系列 298
6.9.6_call_ 301
6.9.7_hash_ 301
6.10习题 302
第7章 学以致用——学生选课系统 303
7.1功能概述 304
7.2需求分析 304
7.2.1角色设计 304
7.2.2功能设计 304
7.2.3流程设计 304
7.2.4程序设计 305
7.2.5流程图 306
7.2.6数据库设计 306
7.3搭建框架 306
7.3.1根据角色信息创建类 307
7.3.2完善角色信息 307
7.3.3设计程序的入口 308
7.3.4实现入口函数最重要的功能 311
7.3.5优化框架 314
7.4细节实现 321
7.4.1管理员之创建课程信息 321
7.4.2管理员之查看课程信息 322
7.4.3管理员之创建学生信息 324
7.4.4管理员之查看学生信息 327
7.4.5管理员之退出程序 328
7.4.6问题:“你,还是你吗?” 329
7.4.7学生之查看可选课程 334
7.4.8学生之选择课程 335
7.4.9学生之查看可选课程 338
7.4.10管理员之查看学生选课信息 339
7.4.11学生之退出 341
7.5系统优化 342
7.5.1查看课程信息功能优化 346
7.5.2退出功能优化 348
7.5.3文件路径的优化 348
7.5.4文件操作优化 349
7.5.5交互体验的优化 350
7.5.6优化后的代码示例 352
7.6总结 358