第 1章 Python如日中天 1
1.1 Python语言基础 1
1.1.1 编程世界的“琅琊榜” 1
1.1.2 Python为什么这么“火” 1
1.1.3 Python语言的特点 2
1.2 安装Python 2
1.2.1 选择版本 2
1.2.2 在Windows系统中下载并安装Python 2
1.2.3 在macOS系统中使用Python 4
1.2.4 在Linux系统中使用Python 4
1.3 Python开发工具介绍 5
1.3.1 使用IDLE 5
1.3.2 使用PyCharm 5
1.4 认识第 一段Python程序 7
1.4.1 使用IDLE编码并运行序 8
1.4.2 使用PyCharm编码并运行程序 8
1.4.3 其他运行方式 10
1.5 技术解惑 11
1.5.1 为PyCharm设置行号 11
1.5.2 断点调试 12
1.6 常见面试题解析 12
1.7 课后练习 12
第 2章 Python基础语法 13
2.1 缩进规则 13
2.2 注释 14
2.3 编码 15
2.3.1 字符编码 15
2.3.2 Python中的编码 16
2.4 标识符和关键字 16
2.5 变量 17
2.6 输入和输出 18
2.6.1 实现输入功能 18
2.6.2 实现输出功能 18
2.7 技术解惑 19
2.7.1 使用注释时的注意事项 19
2.7.2 注意变量的命名规则和建议 20
2.7.3 注意Python语言的缩进规则 20
2.7.4 变量赋值的真正意义 20
2.8 常见面试题解析 20
2.9 课后练习 21
第3章 简单数据类型 22
3.1 Python中的数据类型 22
3.2 字符串 22
3.2.1 访问字符串中的值 23
3.2.2 更新字符串 23
3.2.3 转义字符 24
3.2.4 格式化字符串 25
3.2.5 字符串处理函数 25
3.3 数字类型 27
3.3.1 整型 27
3.3.2 浮点型 27
3.3.3 布尔型 28
3.3.4 复数型 28
3.4 技术解惑 29
3.5 常见面试题解析 29
3.6 课后练习 30
第4章 运算符和表达式 31
4.1 什么是运算符和表达式 31
4.2 算术运算符和算术表达式 32
4.3 比较运算符和比较表达式 33
4.4 赋值运算符和赋值表达式 34
4.4.1 基本赋值运算符和赋值表达式 34
4.4.2 复合赋值运算符和表达式 34
4.5 位运算符和位表达式 35
4.6 逻辑运算符和逻辑表达式 36
4.7 成员运算符和成员表达式 37
4.8 身份运算符和身份表达式 38
4.9 运算符的优先级 39
4.10 技术解惑 41
4.10.1 身份运算符的特质 41
4.10.2 and和or的另一种 用法 41
4.10.3 “is”运算符和“==” 运算符的区别 41
4.11 常见面试题解析 42
4.12 课后练习 43
第5章 条件语句 44
5.1 什么是条件语句 44
5.2 最简单的if语句 44
5.3 使用if...else语句 45
5.4 使用if...elif...else语句 46
5.5 if语句的嵌套 47
5.6 实现switch语句的功能 48
5.6.1 使用elif实现 48
5.6.2 使用字典实现 49
5.6.3 自定义编写一个类实现 49
5.7 技术解惑 50
5.7.1 剖析True和False条件判断的用法 50
5.7.2 再次提醒不支持switch语句的问题 51
5.7.3 最简洁的条件判断语句写法 51
5.8 常见面试题解析 51
5.9 课后练习 52
第6章 循环语句 53
6.1 使用for循环语句 53
6.1.1 基本的for循环语句 53
6.1.2 通过序列索引迭代 54
6.1.3 使用for…else循环语句 54
6.1.4 嵌套for循环语句 55
6.2 使用while循环语句 56
6.2.1 基本的while循环语句 56
6.2.2 使用while…else循环语句 57
6.2.3 死循环问题 57
6.2.4 使用while循环嵌套语句 58
6.3 使用循环控制语句 59
6.3.1 使用break语句 59
6.3.2 使用continue语句 60
6.3.3 使用pass语句 60
6.4 技术解惑 61
6.4.1 总结for循环语句 61
6.4.2 总结break和continue语句 61
6.4.3 使用while循环的注意事项 62
6.5 常见面试题解析 62
6.6 课后练习 62
第7章 使用列表 63
7.1 列表类型基础 63
7.1.1 创建数字列表 63
7.1.2 访问列表中的值 64
7.1.3 使用列表中的值 65
7.2 列表的基本操作 66
7.2.1 更新列表元素 66
7.2.2 插入新的元素 67
7.2.3 删除列表中的元素 68
7.3 列表排列处理 70
7.3.1 使用方法sort()对列表进行永久性排序 70
7.3.2 使用方法sorted()对列表进行临时排序 71
7.3.3 反转输出列表中的信息 72
7.3.4 获取列表的长度 72
7.4 列表的高级操作 73
7.4.1 列表中的运算符 73
7.4.2 列表截取 73
7.4.3 列表嵌套 74
7.4.4 获取列表元素中的最大值和最小值 74
7.4.5 追加其他列表中的值 75
7.4.6 在列表中统计某元素出现的次数 75
7.4.7 清空列表中的元素 75
7.4.8 复制列表中的元素 76
7.4.9 获取列表中某个元素的索引 76
7.5 技术解惑 77
7.6 常见面试题解析 77
7.7 课后练习 77
第8章 使用元组、字典和集合 79
8.1 使用元组类型 79
8.1.1 创建并访问元组 79
8.1.2 修改元组 80
8.1.3 删除元组 81
8.1.4 元组索引和截取 81
8.1.5 使用内置方法操作元组 82
8.2 使用字典 82
8.2.1 创建并访问字典 83
8.2.2 向字典中添加数据 83
8.2.3 修改字典 84
8.2.4 删除字典中的元素 84
8.2.5 创建空字典 85
8.2.6 和字典有关的内置函数 85
8.3 遍历字典 86
8.3.1 一次性遍历所有的“键:值”对 86
8.3.2 遍历字典中的所有键 86
8.3.3 按序遍历字典中的所有键 87
8.3.4 遍历字典中的所有值 87
8.4 字典嵌套 88
8.4.1 字典列表 88
8.4.2 在字典中存储字典 89
8.4.3 在字典中存储列表 90
8.5 使用其他内置方法 90
8.5.1 使用方法clear()清空字典 90
8.5.2 使用方法copy()复制字典 91
8.5.3 使用方法fromkeys()创建新字典 91
8.5.4 使用方法get()获取指定键的值 92
8.5.5 使用方法setdefault()获取指定键的值 92
8.5.6 使用方法update()修改字典 92
8.6 使用集合 93
8.7 类型转换 93
8.7.1 内置类型转换函数 94
8.7.2 类型转换综合演练 94
8.8 技术解惑 96
8.8.1 for遍历方式并不是万能的 96
8.8.2 两种字典遍历方式的性能对比 96
8.9 常见面试题解析 96
8.10 课后练习 97
第9章 使用函数 98
9.1 函数基础 98
9.1.1 定义函数 98
9.1.2 调用函数 99
9.2 函数的参数 100
9.2.1 形参和实参 100
9.2.2 必需参数 100
9.2.3 关键字参数 100
9.2.4 默认参数 101
9.2.5 不定长参数 102
9.2.6 按值传递参数和按引用传递参数 102
9.3 函数的返回值 103
9.3.1 返回一个简单值 103
9.3.2 可选实参 103
9.3.3 返回一个字典 104
9.4 变量的作用域 105
9.5 使用函数传递列表 106
9.5.1 访问列表中的元素 106
9.5.2 在函数中修改列表 106
9.6 使用匿名函数 107
9.7 函数和模块开发 108
9.7.1 导入整个模块文件 108
9.7.2 只导入指定的函数 109
9.7.3 使用as指定函数别名 110
9.7.4 使用as指定模块文件别名 110
9.7.5 导入所有函数 111
9.8 技术解惑 111
9.8.1 Python内置函数大全 111
9.8.2 模块的复用 111
9.9 常见面试题解析 112
9.10 课后练习 113
第 10章 面向对象(上) 114
10.1 定义并使用类 114
10.1.1 定义类 114
10.1.2 类的基本用法 114
10.2 类对象 115
10.3 类方法 116
10.3.1 定义并使用类方法 116
10.3.2 构造方法 116
10.3.3 方法调用 118
10.3.4 创建多个实例 118
10.3.5 使用私有方法 119
10.3.6 析构方法 120
10.3.7 静态方法和类方法 121
10.3.8 类的专有方法 121
10.4 类属性 122
10.4.1 认识属性 122
10.4.2 类属性和实例 属性 122
10.4.3 设置属性的默认值 123
10.4.4 修改属性的值 124
10.4.5 使用私有属性 126
10.5 继承 126
10.5.1 定义子类 127
10.5.2 在子类中定义方法 和属性 128
10.5.3 子类可以继续派生 新类 128
10.5.4 私有属性和私有 方法 130
10.5.5 多重继承 130
10.6 方法重写 132
10.7 技术解惑 132
10.7.1 什么是面向对象 132
10.7.2 Python语言的面向对象 编程 133
10.7.3 必须掌握的统一建模 语言 134
10.7.4 构造函数和析构函数的 特殊说明 134
10.8 常见面试题解析 134
10.9 课后练习 135
第 11章 面向对象(下) 136
11.1 模块架构 136
11.1.1 最基本的模块调用 136
11.1.2 目录“__pycache__” 137
11.1.3 使用“__name__” 属性 138
11.2 使用包 139
11.2.1 表示包 139
11.2.2 创建并使用包 140
11.3 导入类 141
11.3.1 只导入一个类 142
11.3.2 导入指定的类 142
11.3.3 从一个模块文件中导入 多个类 143
11.3.4 导入整个模块文件 143
11.3.5 在一个模块文件中导入另一个模块文件 144
11.4 迭代器 145
11.4.1 什么是迭代器 145
11.4.2 创建并使用迭代器 146
11.4.3 使用内置迭代器 函数iter() 146
11.5 生成器 148
11.5.1 生成器的运行机制 148
11.5.2 创建生成器 149
11.5.3 注意生成器的第 一次 调用 149
11.5.4 使用协程重置生成器序列 150
11.6 装饰器 151
11.6.1 创建装饰器 151
11.6.2 使用装饰器装饰函数 151
11.6.3 使用装饰器装饰类 152
11.7 命名空间 153
11.7.1 命名空间的本质 153
11.7.2 查找命名空间 155
11.7.3 命名空间的生命周期 155
11.7.4 命名空间访问函数locals()与globals() 156
11.8 闭包 157
11.8.1 闭包的概念 157
11.8.2 闭包和嵌套函数 158
11.8.3 使用闭包记录函数的调用次数 158
11.8.4 使用闭包实现延迟请求 159
11.8.5 闭包和装饰器 159
11.8.6 使用闭包定义泛型函数 160
11.9 技术解惑 160
11.9.1 导入包的秘诀 160
11.9.2 无限迭代器的秘密 161
11.10 常见面试题解析 161
11.11 课后练习 162
第 12章 文件操作 163
12.1 使用open()函数打开文件 163
12.2 使用File操作文件 164
12.2.1 File对象介绍 164
12.2.2 使用close()方法 165
12.2.3 使用方法flush() 166
12.2.4 使用方法fileno() 166
12.2.5 使用方法isatty() 166
12.2.6 使用方法next() 167
12.2.7 使用方法read() 167
12.2.8 使用方法readline() 168
12.2.9 使用方法readlines() 169
12.2.10 使用方法seek() 169
12.2.11 使用方法tell() 170
12.2.12 使用方法truncate() 170
12.2.13 使用方法writelines() 171
12.3 使用OS对象 172
12.3.1 OS对象介绍 172
12.3.2 使用方法access() 172
12.3.3 使用方法chdir() 173
12.3.4 使用方法chmod() 173
12.3.5 打开、写入和关闭 174
12.3.6 读取 175
12.3.7 创建目录 176
12.3.8 获取目录下的信息 177
12.3.9 修改目录 178
12.3.10 删除目录 179
12.4 其他常见的文件操作 181
12.4.1 使用fileinput模块 181
12.4.2 批量获取文件名 181
12.5 技术解惑 182
12.5.1 注意包含文件的具体范围 182
12.5.2 4点注意事项 182
12.6 常见面试题解析 182
12.7 课后练习 183
第 13章 异常处理 184
13.1 语法错误 184
13.2 处理异常 185
13.2.1 异常的特殊之处 185
13.2.2 使用“try…except”处理异常 185
13.2.3 使用“try…except…else”处理异常 187
13.2.4 使用“try…except…finally”语句 188
13.3 抛出异常 188
13.3.1 使用raise抛出异常 189
13.3.2 使用assert语句 189
13.3.3 自定义异常 190
13.4 内置异常 190
13.4.1 处理ZeroDivisionError异常 191
13.4.2 FileNotFoundError异常 192
13.4.3 except捕获方式 193
13.4.4 使用函数testmod() 193
13.4.5 使用单元测试函数testfile() 194
13.5 技术解惑 195
13.5.1 注意assert语句的妙用 195
13.5.2 定义清理行为 195
13.6 常见面试题解析 196
13.7 课后练习 196
第 14章 正则表达式 197
14.1 基本语法 197
14.1.1 普通字符 197
14.1.2 非打印字符 198
14.2 使用re模块 198
14.2.1 re模块库函数介绍 198
14.2.2 使用函数compile() 199
14.2.3 使用函数match() 199
14.2.4 使用函数search() 200
14.2.5 使用函数findall() 201
14.2.6 sub()和subn()函数 202
14.3 使用Pattern对象 203
14.4 正则表达式模式 204
14.5 技术解惑 206
14.5.1 为什么使用正则表达式 206
14.5.2 分析函数match()和函数search()的区别 207
14.6 常见面试题解析 207
14.7 课后练习 207
第 15章 多线程开发 208
15.1 线程和进程基础 208
15.2 Python线程处理 208
15.2.1 使用_thread模块 209
15.2.2 使用threading模块:threading模块介绍 209
15.2.3 使用threading模块:直接在线程中运行函数 210
15.2.4 使用threading模块:通过继承类threading.Thread创建 210
15.2.5 使用threading模块:线程等待 211
15.2.6 使用threading模块:线程同步 211
15.3 线程优先级队列模块queue 212
15.3.1 模块queue中的常用方法 212
15.3.2 基本FIFO队列 213
15.3.3 LIFO队列 214
15.3.4 优先级队列 214
15.4 使用模块subprocess创建进程 215
15.4.1 模块subprocess介绍 215
15.4.2 使用类Popen创建进程 217
15.5 技术解惑 218
15.5.1 线程的意义 218
15.5.2 线程和进程的区别 218
15.6 常见面试题解析 219
15.7 课后练习 220
第 16章 Tkinter图形化界面开发 221
16.1 Python图形化界面开发基础 221
16.1.1 GUI介绍 221
16.1.2 使用Python语言编写GUI程序 221
16.2 Tkinter开发基础 222
16.2.1 第 一个Tkinter程序 222
16.2.2 向窗体中添加组件 223
16.3 Tkinter的组件开发详解 223
16.3.1 Tkinter的组件概览 224
16.3.2 使用按钮控件 225
16.3.3 使用文本框控件 226
16.3.4 使用菜单控件 227
16.3.5 使用标签控件 227
16.3.6 使用单选按钮和复选框控件 228
16.3.7 使用绘图控件 230
16.4 库Tkinter的事件 231
16.4.1 Tkinter事件基础 231
16.4.2 动态绘图程序 233
16.5 实现对话框效果 235
16.5.1 创建消息框 235
16.5.2 创建输入对话框 236
16.5.3 创建打开和保存文件对话框 237
16.5.4 创建颜色选择对话框 238
16.5.5 创建自定义对话框 238
16.6 技术解惑 239
16.6.1 格外注意方法pack()的参数 239
16.6.2 务必注意方法grid()的参数 239
16.6.3 务必注意方法place()的参数 240
16.7 常见面试题解析 240
16.8 课后练习 240
第 17章 网络编程 241
17.1 网络开发基础 241
17.1.1 OSI七层网络模型 241
17.1.2 TCP/IP 242
17.2 套接字编程 242
17.2.1 socket()函数介绍 242
17.2.2 socket对象的内置函数和属性 243
17.2.3 使用套接字建立TCP“客户端/服务器”连接 244
17.2.4 使用套接字建立UDP“客户端/服务器”连接 246
17.3 socketserver编程 247
17.3.1 socketserver模块基础 247
17.3.2 使用socketserver创建TCP“客户端/服务器”连接 248
17.4 HTTP开发 249
17.4.1 使用urllib包 249
17.4.2 使用HTTP包 251
17.5 收发电子邮件 252
17.5.1 开发POP3程序 253
17.5.2 开发SMTP程序 255
17.6 技术解惑 257
17.6.1 详细剖析客户端/服务器编程模型 257
17.6.2 详细剖析类 HTTPConnection中的方法 258
17.7 常见面试题解析 259
17.8 课后练习 260
第 18章 数据库开发 261
18.1 操作SQLite3数据库 261
18.2 操作MySQL数据库 263
18.2.1 搭建PyMySQL环境 263
18.2.2 实现数据库连接 263
18.2.3 创建数据库表 264
18.2.4 数据库插入操作 265
18.2.5 数据库查询操作 265
18.2.6 数据库更新操作 266
18.2.7 数据库删除操作 267
18.2.8 执行事务 267
18.3 使用ORM操作数据库 268
18.3.1 Python和ORM 268
18.3.2 使用SQLAlchemy 269
18.4 技术解惑 271
18.4.1 灵活使用查询运算符 271
18.4.2 掌握between关键字的用法 271
18.4.3 了解关联表操作的秘密 271
18.4.4 自行查阅并掌握SQL的知识 272
18.5 常见面试题解析 272
18.6 课后练习 272
第 19章 Python动态Web开发基础 273
19.1 使用Django框架 273
19.1.1 搭建Django环境 273
19.1.2 常用的Django命令 273
19.1.3 第 一个Django项目 274
19.1.4 在URL中传递参数 276
19.1.5 使用模板 278
19.1.6 使用表单 282
19.1.7 实现基本的数据库操作 283
19.1.8 使用Django后台系统开发博客系统 284
19.2 使用Flask框架 286
19.2.1 开始使用Flask框架 286
19.2.2 传递URL参数 288
19.2.3 使用session和cookie 289
19.2.4 文件上传 290
19.3 技术解惑 291
19.3.1 “客户端/服务器”开发模式 291
19.3.2 Python Web客户端开发是大势所趋 291
19.4 常见面试题解析 292
19.5 课后练习 292
第 20章 使用Pygame开发游戏 293
20.1 Pygame开发基础 293
20.1.1 Pygame框架中的模块 293
20.1.2 事件 295
20.1.3 显示模式设置 297
20.1.4 字体处理 298
20.1.5 像素和颜色处理 298
20.1.6 使用Surface绘制图像 299
20.1.7 使用pygame.draw绘图函数 300
20.2 开发一款俄罗斯方块游戏 301
20.3 技术解惑 306
20.3.1 计算机游戏开发的必备知识 306
20.3.2 如何创建Surface对象 307
20.4 常见面试题解析 307
20.5 课后练习 308
第 21章 使用Matplotlib实现数据挖掘 309
21.1 数据可视化 309
21.2 初级绘图 309
21.2.1 绘制点 309
21.2.2 绘制折线 310
21.2.3 设置标签文字和线条粗细 311
21.3 高级绘图 312
21.3.1 自定义散点图样式 312
21.3.2 绘制柱状图 313
21.3.3 绘制多幅子图 316
21.3.4 绘制曲线 318
21.4 技术解惑 322
21.4.1 充分利用官方资源 322
21.4.2 如何实现子图 322
21.5 常见面试题解析 323
21.6 课后练习 324
第 22章 民宿信息可视化分析系统(网络爬虫+Django+Echarts可视化) 325
22.1 系统背景介绍 325
22.2 爬虫抓取信息 326
22.2.1 系统配置 326
22.2.2 Item处理 326
22.2.3 具体爬虫 327
22.2.4 获取民宿的价格信息 327
22.2.5 下载器中间件 329
22.2.6 保存爬虫信息 331
22.3 数据可视化 334
22.3.1 数据库设计 334
22.3.2 视图显示 336
第 23章 人工智能和AI自动化编程 340
23.1 人工智能介绍 340
23.1.1 人工智能的发展方向和技术 340
23.1.2 人工智能在生活中的作用 341
23.2 自动化编程和AIGC 341
23.2.1 自动化编程介绍 341
23.2.2 AIGC介绍 342
23.2.3 AIGC和自动化编程的关系 343
23.2.4 常用的AIGC自动化编程工具 343
23.3 ChatGPT与自动化编程 344
23.3.1 ChatGPT的主要特点 344
23.3.2 ChatGPT在编程方面的功能 344
23.4 Kimi与自动化编程 345
23.4.1 Kimi的主要特点 345
23.4.2 Kimi在编程方面的功能 345
第 24章 AI自动化编程实战 346
24.1 AI自动化编程学习助手 346
24.1.1 基于ChatGPT的学习助手 346
24.1.2 基于Kimi的学习助手 347
24.2 AIGC工具生成代码摘要和解释 348
24.2.1 基于ChatGPT的代码摘要和解释 348
24.2.2 基于Kimi的代码摘要和解释 349
24.3 用AIGC生成代码并添加注释 350
24.3.1 基于ChatGPT生成代码和注释 350
24.3.2 基于Kimi生成代码和注释 351
24.4 用AIGC进行代码补全 352
24.5 用AIGC进行代码重构和优化 353
24.5.1 基于ChatGPT的代码重构和优化 353
24.5.2 基于Kimi的代码重构和优化 354
24.6 用AIGC进行代码纠错 354
24.6.1 基于ChatGPT的代码纠错 355
24.6.2 基于Kimi的代码纠错 355
24.7 用AIGC辅助学习官方开发文档 355
24.7.1 使用ChatGPT学习官方开发文档 356
24.7.2 使用Kimi学习官方开发文档 356
第 25章 基于ChatGPT和Kimi实现的贪吃蛇游戏 358
25.1 基于ChatGPT实现的游戏背景介绍 358
25.2 基于Kimi的需求分析 358
25.3 用大模型实现一个简易版的贪吃蛇游戏 360
25.4 用大模型增加游戏等级功能 362
25.5 使用Kimi美化游戏界面 364
25.5.1 增加蛇的素材图片 365
25.5.2 增加游戏背景图 367
25.5.3 用大模型增加代码注释 370
25.6 用大模型讲解代码 372
25.6.1 大模型总结功能和技术栈 373
25.6.2 用大模型对代码进行剖析 373
第 26章 基于DeepSeek实现的五子棋游戏 379
26.1 基于DeepSeek实现的游戏背景介绍 379
26.2 基于DeepSeek的需求分析 380
26.3 具体编程实现 381
26.4 用大模型增加AI人机对战功能 383
26.4.1 DeepSeek的第 一次回答 383
26.4.2 第 一次回答 386
26.5 使用DeepSeek美化游戏界面 390
26.5.1 增加棋盘素材图片 390
26.5.2 增加音频特效 393
26.6 用DeepSeek讲解代码 396
26.6.1 总结功能和技术栈 396
26.6.2 用DeepSeek对代码进行剖析 398