书海网短评:
《Python语言及其应用》内容易于理解,而且读起来生动有趣,是编程和Python初学者不可多得的教程。书中首先介绍了Python的基础知识,然后逐渐深入多种主题,结合教程和攻略式风格来讲解Python3中的概念。每章结
《Python语言及其应用》内容易于理解,而且读起来生动有趣,是编程和Python初学者不可多得的教程。书中首先介绍了Python的基础知识,然后逐渐深入多种主题,结合教程和攻略式风格来讲解Python3中的概念。每章结尾的练习可以帮助你巩固所学的知识。
《Python语言及其应用》会为你学习Python打下坚实的基础,包括测试、调试、代码复用的实践以及其他开发技巧。同时还会告诉你如何在商业、科学和艺术领域使用Python,并教会你使用多种Python工具和开源包。
通过阅读《Python语言及其应用》,你将能够:
学习简单的数据类型,以及基本的数学和文本操作
学习用Python内置的数据结构来处理数据
掌握Python的代码结构和函数的用法
使用模块和包编写大规模Python程序
深入理解对象、类和其他面向对象特性
学习使用普通文件、关系数据库和NoSQL数据库来存储数据
使用Python构建Web客户端、服务器、API和服务
管理系统任务,比如程序、进程和线程
理解并发和网络编程的基础知识
《Python语言及其应用》介绍Python语言的基础知识及其在各个领域的具体应用,基于新版本3.x。书中首先介绍了Python语言的一些基本知识,然后介绍了在商业、科研以及艺术领域使用Python开发各种应用的实例。文字简洁明了,案例丰富实用,是一本难得的Python入门手册。
《Python语言及其应用》适合所有编程初学者阅读。
BillLubanovic,现为PenguinComputing公司高级软件工程师。1977年开始开发Unix软件,1981年开始开发GUI软件,1990年开始开发数据库软件,1993年开始开发Web软件。与人合著有LinuxSystemAdministration。
★BillLubanovic编写了一本非常优秀的著作,介绍了编程的基础知识,并指导你如何利用庞大的Python工具箱解决现实生活中的问题。通过阅读《Python语言及其应用》,你一定能学会如何用Python解决问题。
——LocPefferkorn,开源系统工程师
前言xiv
第1章 Python初探1
1.1 真实世界中的Python5
1.2 Python与其他语言5
1.3 为什么选择Python7
1.4 何时不应该使用Python8
1.5 Python2与Python38
1.6 安装Python9
1.7 运行Python9
1.7.1 使用交互式解释器9
1.7.2 使用Python文件10
1.7.3 下一步11
1.8 禅定一刻11
1.9 练习11
第2章 Python基本元素:数字、字符串和变量13
2.1 变量、名字和对象13
2.2 数字16
2.2.1 整数17
2.2.2 优先级20
2.2.3 基数21
2.2.4 类型转换22
2.2.5 一个int型有多大23
2.2.6 浮点数24
2.2.7 数学函数24
2.3 字符串24
2.3.1 使用引号创建25
2.3.2 使用str()进行类型转换27
2.3.3 使用\转义27
2.3.4 使用+拼接28
2.3.5 使用*复制28
2.3.6 使用[]提取字符28
2.3.7 使用[start:end:step]分片29
2.3.8 使用len()获得长度31
2.3.9 使用split()分割32
2.3.10 使用join()合并32
2.3.11 熟悉字符串32
2.3.12 大小写与对齐方式33
2.3.13 使用replace()替换34
2.3.14 更多关于字符串的内容35
2.4 练习35
第3章 Python容器:列表、元组、字典与集合36
3.1 列表和元组36
3.2 列表37
3.2.1 使用[]或list()创建列表37
3.2.2 使用list()将其他数据类型转换成列表37
3.2.3 使用[offset]获取元素38
3.2.4 包含列表的列表39
3.2.5 使用[offset]修改元素39
3.2.6 指定范围并使用切片提取元素40
3.2.7 使用append()添加元素至尾部40
3.2.8 使用extend()或+=合并列表40
3.2.9 使用insert()在指定位置插入元素41
3.2.10 使用del删除指定位置的元素41
3.2.11 使用remove()删除具有指定值的元素42
3.2.12 使用pop()获取并删除指定位置的元素42
3.2.13 使用index()查询具有特定值的元素位置42
3.2.14 使用in判断值是否存在42
3.2.15 使用count()记录特定值出现的次数43
3.2.16 使用join()转换为字符串43
3.2.17 使用sort()重新排列元素44
3.2.18 使用len()获取长度44
3.2.19 使用=赋值,使用copy()复制45
3.3 元组46
3.3.1 使用()创建元组46
3.3.2 元组与列表47
3.4 字典47
3.4.1 使用{}创建字典48
3.4.2 使用dict()转换为字典48
3.4.3 使用[key]添加或修改元素49
3.4.4 使用update()合并字典50
3.4.5 使用del删除具有指定键的元素51
3.4.6 使用clear()删除所有元素51
3.4.7 使用in判断是否存在51
3.4.8 使用[key]获取元素52
3.4.9 使用keys()获取所有键52
3.4.10 使用values()获取所有值53
3.4.11 使用items()获取所有键值对53
3.4.12 使用=赋值,使用copy()复制53
3.5 集合53
3.5.1 使用set()创建集合54
3.5.2 使用set()将其他类型转换为集合54
3.5.3 使用in测试值是否存在55
3.5.4 合并及运算符56
3.6 比较几种数据结构58
3.7 建立大型数据结构59
3.8 练习60
第4章 Python外壳:代码结构61
4.1 使用#注释61
4.2 使用\连接62
4.3 使用if、elif和else进行比较63
4.4 使用while进行循环66
4.4.1 使用break跳出循环66
4.4.2 使用continue跳到循环开始67
4.4.3 循环外使用else67
4.5 使用for迭代68
4.5.1 使用break跳出循环69
4.5.2 使用continue跳到循环开始69
4.5.3 循环外使用else69
4.5.4 使用zip()并行迭代70
4.5.5 使用range()生成自然数序列71
4.5.6 其他迭代方式71
4.6 推导式72
4.6.1 列表推导式72
4.6.2 字典推导式74
4.6.3 集合推导式74
4.6.4 生成器推导式74
4.7 函数75
4.7.1 位置参数79
4.7.2 关键字参数79
4.7.3 指定默认参数值79
4.7.4 使用*收集位置参数80
4.7.5 使用**收集关键字参数81
4.7.6 文档字符串82
4.7.7 一等公民:函数82
4.7.8 内部函数84
4.7.9 闭包84
4.7.10 匿名函数:lambda()函数85
4.8 生成器86
4.9 装饰器87
4.10 命名空间和作用域89
4.11 使用try和except处理错误91
4.12 编写自己的异常93
4.13 练习94
第5章 Python盒子:模块、包和程序95
5.1 独立的程序95
5.2 命令行参数96
5.3 模块和import语句96
5.3.1 导入模块96
5.3.2 使用别名导入模块98
5.3.3 导入模块的一部分98
5.3.4 模块搜索路径98
5.4 包99
5.5 Python标准库99
5.5.1 使用setdefault()和defaultdict()处理缺失的键100
5.5.2 使用Counter()计数101
5.5.3 使用有序字典OrderedDict()按键排序103
5.5.4 双端队列:栈+队列103
5.5.5 使用itertools迭代代码结构104
5.5.6 使用pprint()友好输出105
5.6 获取更多Python代码105
5.7 练习106
第6章 对象和类107
6.1 什么是对象107
6.2 使用class定义类108
6.3 继承109
6.4 覆盖方法111
6.5 添加新方法112
6.6 使用super从父类得到帮助112
6.7 self的自辩113
6.8 使用属性对特性进行访问和设置114
6.9 使用名称重整保护私有特性117
6.10 方法的类型118
6.11 鸭子类型119
6.12 特殊方法120
6.13 组合123
6.14 何时使用类和对象而不是模块124
6.15 练习126
第7章 像高手一样玩转数据127
7.1 文本字符串127
7.1.1 Unicode127
7.1.2 格式化134
7.1.3 使用正则表达式匹配137
7.2 二进制数据144
7.2.1 字节和字节数组144
7.2.2 使用struct转换二进制数据145
7.2.3 其他二进制数据工具148
7.2.4 使用binascii()转换字节/字符串149
7.2.5 位运算符149
7.3 练习149
第8章 数据的归宿152
8.1 文件输入/输出152
8.1.1 使用write()写文本文件153
8.1.2 使用read()、readline()或者readlines()读文本文件154
8.1.3 使用write()写二进制文件156
8.1.4 使用read()读二进制文件157
8.1.5 使用with自动关闭文件157
8.1.6 使用seek()改变位置157
8.2 结构化的文本文件159
8.2.1 CSV159
8.2.2 XML161
8.2.3 HTML163
8.2.4 JSON163
8.2.5 YAML165
8.2.6 安全提示166
8.2.7 配置文件167
8.2.8 其他交换格式168
8.2.9 使用pickle序列化168
8.3 结构化二进制文件169
8.3.1 电子数据表169
8.3.2 层次数据格式169
8.4 关系型数据库170
8.4.1 SQL170
8.4.2 DB-API172
8.4.3 SQLite172
8.4.4 MySQL174
8.4.5 PostgreSQL174
8.4.6 SQLAlchemy174
8.5 NoSQL数据存储179
8.5.1 dbmfamily180
8.5.2 memcached180
8.5.3 Redis181
8.5.4 其他的NoSQL189
8.6 全文数据库189
8.7 练习190
第9章 剖析Web191
9.1 Web客户端192
9.1.1 使用telnet进行测试193
9.1.2 Python的标准Web库194
9.1.3 抛开标准库:requests195
9.2 Web服务端196
9.2.1 最简单的PythonWeb服务器196
9.2.2 Web服务器网关接口198
9.2.3 框架198
9.2.4 Bottle198
9.2.5 Flask201
9.2.6 非Python的Web服务器204
9.2.7 其他框架206
9.3 Web服务和自动化207
9.3.1 webbrowser模块207
9.3.2 WebAPI和表述性状态传递208
9.3.3 JSON209
9.3.4 抓取数据209
9.3.5 用BeautifulSoup来抓取HTML209
9.4 练习210
第10章 系统212
10.1 文件212
10.1.1 用open()创建文件212
10.1.2 用exists()检查文件是否存在213
10.1.3 用isfile()检查是否为文件213
10.1.4 用copy()复制文件213
10.1.5 用rename()重命名文件214
10.1.6 用link()或者symlink()创建链接214
10.1.7 用chmod()修改权限214
10.1.8 用chown()修改所有者214
10.1.9 用abspath()获取路径名215
10.1.10 用realpath()获取符号的路径名215
10.1.11 用remove()删除文件215
10.2 目录215
10.2.1 使用mkdir()创建目录215
10.2.2 使用rmdir()删除目录215
10.2.3 使用listdir()列出目录内容216
10.2.4 使用chdir()修改当前目录216
10.2.5 使用glob()列出匹配文件216
10.3 程序和进程217
10.3.1 使用subprocess创建进程218
10.3.2 使用multiprocessing创建进程219
10.3.3 使用terminate()终止进程219
10.4 日期和时间220
10.4.1 datetime模块221
10.4.2 使用time模块223
10.4.3 读写日期和时间225
10.4.4 其他模块227
10.5 练习228
第11章 并发和网络229
11.1 并发230
11.1.1 队列231
11.1.2 进程231
11.1.3 线程232
11.1.4 绿色线程和gevent234
11.1.5 twisted236
11.1.6 asyncio238
11.1.7 Redis238
11.1.8 队列之上241
11.2 网络241
11.2.1 模式242
11.2.2 发布-订阅模型242
11.2.3 TCP/IP245
11.2.4 套接字246
11.2.5 ZeroMQ250
11.2.6 scapy253
11.2.7 网络服务253
11.2.8 Web服务和API255
11.2.9 远程处理256
11.2.10 大数据和MapReduce260
11.2.11 在云上工作261
11.3 练习264
第12章 成为真正的Python开发者265
12.1 关于编程265
12.2 寻找Python代码265
12.3 安装包266
12.3.1 使用pip266
12.3.2 使用包管理工具267
12.3.3 从源代码安装267
12.4 集成开发环境268
12.4.1 IDLE268
12.4.2 PyCharm268
12.4.3 IPython269
12.5 命名和文档269
12.6 测试代码270
12.6.1 使用pylint、pyflakes和pep8检查代码270
12.6.2 使用unittest进行测试272
12.6.3 使用doctest进行测试276
12.6.4 使用nose进行测试277
12.6.5 其他测试框架278
12.6.6 持续集成278
12.7 调试Python代码278
12.8 使用pdb进行调试279
12.9 记录错误日志284
12.10 优化代码286
12.10.1 测量时间286
12.10.2 算法和数据结构288
12.10.3 Cython、NumPy和C扩展289
12.10.4 PyPy289
12.11 源码控制289
12.11.1 Mercurial290
12.11.2 Git290
12.12 复制《Python语言及其应用》代码292
12.13 更多内容293
12.13.1 书293
12.13.2 网站293
12.13.3 社区293
12.13.4 大会294
12.14 后续内容294
附录A Python的艺术295
附录B 工作中的Python307
附录C Python的科学320
附录D 安装Python3339
附录E 习题解答349
附录F 速查表380
作者介绍383
封面介绍383
《Python语言及其应用》介绍Python编程语言,主要面向编程初学者。不过,如果你是一位有经验的程序员,想再学门Python编程语言,《Python语言及其应用》也很适合作为入门读物。
《Python语言及其应用》节奏适中,从基础开始逐步深入其他话题。我会结合食谱和教程的风格来解释新术语和新概念,但不会一次介绍很多。你会尽早并且常常接触到真实的Python代码。
虽然《Python语言及其应用》是入门读物,但我还是介绍了一些看起来比较高阶的话题,比如NoSQL数据库和消息传递库。之所以介绍它们,是因为在解决某类问题时它们比标准库更加合适。你需要下载并安装这些第三方Python包,从而更好地理解Python“内置电池”适用于什么场景。此外,尝试新事物本身也充满乐趣。
我还会展示一些反面的例子,提醒你不要那么去做。如果你之前使用过其他语言并且想把风格照搬到Python的话,要格外注意。还有,我不认为Python是完美的,我会告诉你哪些东西应该避免。
书中有时会出现类似本条的提示内容,主要用于解释一些容易混淆的概念或者用更合适的Python风格的方法来解决同一个问题。
目标读者
《Python语言及其应用》的目标读者是那些对世界上最流行的计算语言感兴趣的人,无论你之前是否学过编程。
《Python语言及其应用》结构
《Python语言及其应用》前7章介绍Python基础知识,建议按顺序阅读。后面5章介绍如何在不同的应用场景中使用Python,比如Web、数据库、网络,等等,可以按任意顺序阅读。附录A、B、C介绍Python在艺术、商业和科学方面的应用,附录D是Python3的安装教程,附录E和附录F是每章练习题的答案和速查表。









