本书以帮助零基础读者学习并掌握计算机编程Python语言为宗旨,全面系统地讲解了Python语言的基础内容和核心技术,并设计大量实际企业工作中的编程场景和代码实例,提供大量的设计过程和图例,增加读者的实战操作经验和提高分析解决问题的能力。本书的每一章特别编写了知识扩展章节,归纳总结了Python在实战应用、编程技巧和互联网安全等方面的相关知识。同时,本书还配有教学视频,对书中的复杂程序和代码进行详细解释和操作演示,便于初学者理解,提高学习效率,并按照正确的思路和方法将所学知识运用到高新技术、移动互联网、智能大数据等大中小企业的计算机软件开发中。
第1章 走进Python……………………… 1
1.1 Python编程语言概述………………… 1
1.1.1 Python的历史… …………………… 1
1.1.2 Python的设计哲学与应用范围… … 2
1.1.3 Python 2和Python 3… ……………… 4
1.2 学好Python的建议…………………… 5
1.2.1 Python语言的特点… ……………… 5
1.2.2 如何学习Python?… ……………… 6
1.3 Python官方文档……………………… 7
1.4 常用软件……………………………… 7
1.5 Python开发社区……………………… 8
第2章 安装和运行Python……………… 9
2.1 在Windows上安装Python…………… 9
2.1.1 安装Python… ……………………… 10
2.1.2 运行Python… ……………………… 11
2.1.3 安装文本编辑器…………………… 12
2.2 在Mac上安装Python… ……………… 15
2.2.1 安装Python… ……………………… 15
2.2.2 运行Python… ……………………… 16
2.2.3 安装文本编辑器…………………… 16
2.3 在Linux上安装Python… …………… 18
2.3.1 安装Python… ……………………… 18
2.3.2 运行Python… ……………………… 19
2.4 小结…………………………………… 20
第3章 小试Python…………………… 21
3.1 开始Python编程……………………… 21
3.1.1 数字………………………………… 21
3.1.2 字符串……………………………… 23
3.1.3 列表………………………………… 28
3.2 其他常见类型………………………… 29
3.2.1 字面量……………………………… 29
3.2.2 布尔类型…………………………… 29
3.2.3 常量………………………………… 30
3.3 运算符………………………………… 30
3.3.1 算术运算符………………………… 30
3.3.2 比较运算符………………………… 31
3.3.3 赋值运算符………………………… 32
3.3.4 位运算符…………………………… 34
3.3.5 逻辑运算符………………………… 34
3.3.6 关键字in和is… …………………… 35
3.4 表达式………………………………… 36
3.5 小结…………………………………… 36
3.6 知识拓展……………………………… 36
3.6.1 运算符优先级……………………… 36
3.6.2 注释………………………………… 37
第4章 数据结构… …………………… 38
4.1 通用序列操作………………………… 38
4.1.1 索引………………………………… 38
4.1.2 切片………………………………… 40
4.1.3 序列相加…………………………… 50
4.1.4 序列重复…………………………… 51
4.1.5 成员资格…………………………… 52
4.1.6 长度、最小值、最大值和求和…… 54
4.2 列表…………………………………… 55
4.2.1 列表更新…………………………… 55
4.2.2 增加元素…………………………… 56
4.2.3 删除元素…………………………… 58
4.2.4 查找元素…………………………… 60
4.2.5 队列的其他操作…………………… 61
4.3 元组…………………………………… 62
4.3.1 定义元组…………………………… 62
4.3.2 删除元组…………………………… 63
4.3.3 元组的其他操作…………………… 64
4.4 字典…………………………………… 65
4.4.1 定义字典…………………………… 65
4.4.2 使用字典…………………………… 66
4.4.3 字典的其他操作…………………… 68
4.5 小结…………………………………… 74
4.6 知识拓展……………………………… 74
4.6.1 集合………………………………… 74
4.6.2 列表推导式、字典推导式和集合
推导式……………………………… 77
第5章 流程控制… …………………… 79
5.1 if判断… ……………………………… 79
5.1.1 if语句… …………………………… 79
5.1.2 else语句… ………………………… 83
5.1.3 elif语句……………………………… 83
5.2 循环…………………………………… 85
5.2.1 while循环…………………………… 85
5.2.2 for循环……………………………… 86
5.2.3 break和continue语句… …………… 90
5.3 小结…………………………………… 91
5.4 知识拓展……………………………… 91
5.4.1 pass语句… ………………………… 91
5.4.2 循环语句中的else… ……………… 94
第6章 函 数… ……………………… 97
6.1 函数的概念…………………………… 97
6.2 函数的定义…………………………… 97
6.3 函数参数……………………………… 98
6.3.1 必须参数…………………………… 99
6.3.2 关键字参数 ……………………… 100
6.3.3 默认参数………………………… 101
6.3.4 可变参数………………………… 103
6.4 变量作用域………………………… 106
6.4.1 局部变量………………………… 106
6.4.2 全局变量………………………… 108
6.5 函数返回值………………………… 109
6.6 Lambda表达式… ………………… 112
6.7 小结………………………………… 114
6.8 知识拓展…………………………… 114
6.8.1 文档字符串……………………… 114
6.8.2 内置函数………………………… 116
6.8.3 函数注释………………………… 117
第7章 面向对象… …………………… 119
7.1 面向对象介绍……………………… 119
7.1.1 对象……………………………… 121
7.1.2 类………………………………… 123
7.2 Python与面向对象………………… 123
7.2.1 介绍……………………………… 124
7.2.2 定义语法………………………… 124
7.2.3 类的使用………………………… 125
7.2.4 类的构造方法…………………… 125
7.2.5 类的属性………………………… 126
7.2.6 类中的方法……………………… 127
7.2.7 私有属性………………………… 128
7.2.8 私有方法………………………… 130
7.3 继承和多态………………………… 130
7.3.1 继承……………………………… 130
7.3.2 多态……………………………… 135
7.3.3 鸭子类型………………………… 138
7.4 小结………………………………… 140
7.5 知识拓展…………………………… 140
7.5.1 类变量和实例变量……………… 140
7.5.2 静态方法与类方法……………… 141
第8章 错误和异常… ………………… 143
8.1 语法错误…………………………… 143
8.2 异常………………………………… 144
8.3 处理异常…………………………… 146
8.4 抛出异常…………………………… 148
8.5 finally子句… ……………………… 150
8.6 小结………………………………… 151
8.7 知识拓展…………………………… 152
自定义异常……………………………… 152
第9章 模 块… ……………………… 154
9.1 介绍………………………………… 154
9.2 模块………………………………… 154
9.2.1 模块介绍………………………… 154
9.2.2 __name__变量…………………… 155
9.2.3 dir函数…………………………… 156
9.2.4 使用模块………………………… 157
9.3 包…………………………………… 158
9.3.1 使用包…………………………… 158
9.3.2 包在多目录中使用……………… 159
9.4 标准库……………………………… 160
9.4.1 sys………………………………… 160
9.4.2 os… ……………………………… 166
9.4.3 math… …………………………… 169
9.4.4 random… ………………………… 172
9.5 安装第三方库……………………… 175
9.5.1 Linux以及Mac OS平台…………… 175
9.5.2 Windows平台… ………………… 177
9.6 小结………………………………… 178
9.7 知识拓展…………………………… 179
9.7.1 globals和locals函数……………… 179
9.7.2 pyc文件… ……………………… 183
第10章 文件与IO… ………………… 184
10.1 打开文件… ……………………… 184
10.1.1 文件模式… …………………… 184
10.1.2 文件编码… …………………… 185
10.1.3 文件缓冲… …………………… 186
10.2 文件基本操作… ………………… 186
10.2.1 读文件… ……………………… 186
10.2.2 写文件… ……………………… 187
10.2.3 按行读文件… ………………… 188
10.2.4 按行写文件… ………………… 189
10.2.5 关闭文件… …………………… 190
10.3 StringIO和BytesIO… …………… 192
10.4 序列化与反序列化… …………… 194
10.4.1 pickle模块… …………………… 194
10.4.2 JSON序列化与反序列化… …… 197
10.5 小结… …………………………… 200
第11章 日期和时间………………… 201
11.1 基本概念… ……………………… 201
11.1.1 时间戳… ……………………… 201
11.1.2 时间日期格式化符号… ……… 202
11.1.3 时间元组… …………………… 203
11.2 time模块… ……………………… 203
11.2.1 time函数………………………… 203
11.2.2 localtime函数…………………… 204
11.2.3 mktime函数… ………………… 204
11.2.4 gmtime函数… ………………… 205
11.2.5 asctime函数… ………………… 206
11.2.6 ctime函数… …………………… 206
11.2.7 sleep函数… …………………… 207
11.2.8 clock函数… …………………… 207
11.2.9 strftime函数… ………………… 208
11.2.10 strptime函数…………………… 209
11.3 datetime模块……………………… 209
11.3.1 date对象………………………… 209
11.3.2 time对象………………………… 212
11.3.3 datetime对象… ………………… 213
11.3.4 timedelta对象…………………… 216
11.3.5 tzinfo对象… …………………… 217
11.4 calendar模块……………………… 218
11.5 小结… …………………………… 222
11.6 知识拓展… ……………………… 223
11.6.1 dateutil介绍… ………………… 223
11.6.2 使用dateutil… ………………… 223
第12章 多线程与并行……………… 227
12.1 线程和进程介绍… ……………… 227
12.1.1 进程基本概念… ……………… 227
12.1.2 线程基本概念… ……………… 228
12.1.3 多线程基本概念… …………… 228
12.1.4 Python与全局解释器锁………… 229
12.2 Python线程模块… ……………… 229
12.2.1 _thread模块… ………………… 229
12.2.2 Threading.Thread… …………… 233
12.2.3 线程同步… …………………… 237
12.2.4 队列… ………………………… 241
12.3 Python进程模块… ……………… 244
12.3.1 os模块…………………………… 244
12.3.2 subprocess模块… ……………… 246
12.3.3 multiprocessing.Process… ……… 249
12.4 小结… …………………………… 253
12.5 知识拓展… ……………………… 253
12.5.1 进程池… ……………………… 253
12.5.2 线程池… ……………………… 256
第13章 正则表达式………………… 259
13.1 正则表达式介绍… ……………… 259
13.2 正则表达式语法… ……………… 260
13.2.1 普通字符… …………………… 260
13.2.2 字符转义… …………………… 262
13.2.3 元字符… ……………………… 262
13.2.4 限定符… ……………………… 263
13.2.5 定位符… ……………………… 264
13.2.6 分组构造… …………………… 265
13.2.7 匹配模式… …………………… 265
13.3 re模块… ………………………… 266
13.3.1 re模块介绍……………………… 266
13.3.2 compile函数… ………………… 267
13.3.3 match函数… …………………… 267
13.3.4 re.search………………………… 268
13.3.5 re.findall………………………… 269
13.3.6 re.split…………………………… 269
13.3.7 re.sub… ………………………… 270
13.4 小结… …………………………… 270
13.5 知识拓展… ……………………… 271
13.5.1 re模块的分组匹配……………… 271
13.5.2 贪婪与非贪婪匹配… ………… 272
13.5.3 零宽断言… …………………… 272
13.5.4 常用正则表达式参考… ……… 273
第14章 邮件处理…………………… 282
14.1 电子邮件介绍… ………………… 282
14.1.1 电子邮件简介… ……………… 282
14.1.2 电子邮件格式… ……………… 282
14.1.3 电子邮件工作原理… ………… 283
14.2 发送电子邮件… ………………… 284
14.2.1 SMTP发送电子邮件… ………… 284
14.2.2 发送HTML格式的电子邮件… … 286
14.2.3 发送带附件的邮件… ………… 287
14.2.4 发送图片… …………………… 289
14.3 接收电子邮件… ………………… 291
14.3.1 使用POP3协议下载邮件… …… 291
14.3.2 使用IMAP协议下载邮件… …… 293
14.3.3 解析邮件… …………………… 294
14.4 小结… …………………………… 296
第15章 加密解密…………………… 297
15.1 加密技术概述… ………………… 297
15.1.1 加密技术介绍… ……………… 297
15.1.2 对称加密算法… ……………… 299
15.1.3 非对称加密算法… …………… 299
15.1.4 数字签名… …………………… 300
15.2 Python加密技术… ……………… 301
15.2.1 使用MD5加密… ……………… 301
15.2.2 使用SHA加密… ……………… 304
15.2.3 使用DES加密…………………… 304
15.2.4 使用AES加密…………………… 306
15.2.5 使用RSA加密…………………… 308
15.3 加密技术使用场景… …………… 311
15.3.1 密码存储… …………………… 311
15.3.2 base64加密……………………… 311
15.4 小结… …………………………… 312
15.5 知识拓展… ……………………… 312
15.5.1 密码学之父… ………………… 312
15.5.2 万维网的发展… ……………… 312
15.5.3 Hash在密码学的应用… ……… 313
15.5.4 加盐算法… …………………… 313
第16章 网络编程…………………… 314
16.1 计算机网络介绍… ……………… 314
16.1.1 OSI七层模型…………………… 314
16.1.2 TCP/IP协议介绍… …………… 315
16.1.3 什么是IP地址?… …………… 315
16.1.4 什么是子网掩码?… ………… 316
16.1.5 域名… ………………………… 317
16.2 Python底层网络模块… ………… 317
16.2.1 Socket简介……………………… 317
16.2.2 socket模块……………………… 318
16.2.3 socket对象方法………………… 319
16.3 TCP编程… ……………………… 321
16.3.1 客户端… ……………………… 321
16.3.2 服务端… ……………………… 324
16.4 UDP编程… ……………………… 326
16.5 urllib模块… ……………………… 328
16.5.1 GET请求………………………… 328
16.5.2 POST请求… …………………… 330
16.6 小结… …………………………… 332
16.7 知识拓展… ……………………… 332
16.7.1 requests模块介绍… …………… 332
16.7.2 requests模块简单使用… ……… 333
第17章 MySQL数据库… …………… 337
17.1 MySQL介绍… …………………… 337
17.2 MySQL工具介绍… ……………… 337
17.2.1 MySQL 控制台客户端… ……… 337
17.2.2 MySQL Workbench软件………… 338
17.3 数据库管理… …………………… 338
17.3.1 创建数据库… ………………… 338
17.3.2 选择数据库… ………………… 339
17.3.3 查看数据库… ………………… 340
17.3.4 修改数据库… ………………… 341
17.3.5 删除数据库… ………………… 341
17.4 字段类型… ……………………… 342
17.4.1 数值类型… …………………… 342
17.4.2 字符串类型… ………………… 343
17.4.3 时间类型… …………………… 344
17.5 数据表操作… …………………… 345
17.5.1 创建数据表… ………………… 345
17.5.2 查看数据表… ………………… 348
17.5.3 修改数据表… ………………… 350
17.5.4 删除数据表… ………………… 353
17.6 数据库语句… …………………… 353
17.6.1 新增数据… …………………… 353
17.6.2 查询数据… …………………… 354
17.6.3 修改数据… …………………… 354
17.6.4 删除数据… …………………… 355
17.6.5 replace操作… ………………… 355
17.7 数据表字符集… ………………… 356
17.7.1 查看字符集… ………………… 357
17.7.2 设置字符集… ………………… 359
17.7.3 处理乱码… …………………… 360
17.8 数据库索引… …………………… 361
17.8.1 索引介绍… …………………… 361
17.8.2 唯一索引… …………………… 361
17.8.3 普通索引… …………………… 362
17.9 小结… …………………………… 363
17.10 知识拓展………………………… 363
17.10.1 MySQL关键字… ……………… 363
17.10.2 MySQL的发展历程… ………… 365
第18章 Python操作MySQL………… 367
18.1 Python数据库API………………… 367
18.1.1 DB-API介绍… ………………… 367
18.1.2 模块接口… …………………… 367
18.1.3 错误和异常… ………………… 368
18.1.4 连接和游标对象… …………… 369
18.1.5 类型… ………………………… 372
18.2 数据库操作… …………………… 373
18.2.1 安装模块… …………………… 373
18.2.2 连接数据库… ………………… 373
18.2.3 创建表… ……………………… 374
18.2.4 插入数据… …………………… 375
18.2.5 查询数据… …………………… 376
18.2.6 更新数据… …………………… 377
18.2.7 删除数据… …………………… 379
18.3 事务… …………………………… 380
18.4 小结… …………………………… 382
18.5 知识拓展… ……………………… 382
18.5.1 SQLAlchemy模块介绍… ……… 382
18.5.2 SQLAlchemy模块简单使用… … 382
第19章 使用Django创建Web站点…… 385
19.1 常见的Web开发框架… ………… 385
19.1.1 Python与Web…………………… 385
19.1.2 Flask… ………………………… 385
19.1.3 Tornado… ……………………… 386
19.1.4 Django…………………………… 387
19.1.5 Pyramid… ……………………… 387
19.1.6 选择合适的框架… …………… 388
19.2 开发环境介绍… ………………… 388
19.2.1 Django安装……………………… 388
19.2.2 创建Django项目………………… 389
19.2.3 开发服务器… ………………… 391
19.3 开始Django之旅… ……………… 394
19.3.1 配置数据库… ………………… 394
19.3.2 生成Django应用………………… 395
19.3.3 创建模型… …………………… 397
19.3.4 管理站点… …………………… 399
19.3.5 编辑视图… …………………… 403
19.3.6 使用模板… …………………… 405
19.3.7 总结… ………………………… 407
19.4 小结… …………………………… 408
19.5 知识拓展… ……………………… 408
19.5.1 WSGI介绍… …………………… 408
19.5.2 实现一个简单的WSGI接口… … 409
第1章 走进Python
1.2 学好Python的建议
1.2.1 Python语言的特点
Python是一门动态类型的解释型语言。作为解释型语言,Python不需要像Pascal或者C++那样在运行之前先通过编译器进行漫长的编译过程生成二进制文件之后才能运行,Python程序只需要在运行的操作系统上安装Python解释器就可以运行。在运行期间,解释器将代码逐行解释为机器码之后再运行。作为动态类型的编程语言,Python拥有动态类型系统,相对于C++和Java等静态类型语言,Python在运行时才进行类型检查,并且随时可以改变变量的类型。读者会在深入学习本书之后体会到动态类型系统的优点。Python还有成熟的垃圾回收功能,能够自动管理内存使用,并且支持多种编程范式,包括面向对象、命令式、函数式和过程式编程,其本身拥有一个巨大而广泛的标准库。
Python解释器本身几乎可以在所有的操作系统中运行。Python的正式解释器CPython是用C语言编写的,是一个由社群驱动的自由软件,目前由Python软件基金会管理。
虽然Python被归类为脚本语言,但实际上许多大规模软件开发项目和公司例如谷歌、土豆
网、今日头条、豆瓣以及知乎等网站都广泛地使用Python作为其开发语言。与其他如Shell Script、VBScript等只能处理简单任务的脚本语言不同,Python几乎能处理所有需要计算机处理的任务。
Python本身被设计为可扩展的,并非所有的特性和功能都集成到语言核心之中。Python提供了丰富的API(Application Programming Interface,应用程序编程接口)和工具,以便程序员能够轻松地使用C、C++、Cython来编写扩展模块。Python编译器本身也可以被集成到其他需要脚本语言的程序内。因此,有很多人把Python当作一种“胶水语言”使用,将其他语言编写的程序进行集成和封装。许多公司会在性能要求极高的部分使用C或者C++开发,然后使用Python调用相应的模块,这充分体现了Python开发快的优势。当然,其中的缺点也十分明显,Python并没有像汇编语言、C、C++和Java语言那样运行高效,但是大部分情况下Python的执行效率能完全满足需求。
47182599