编辑推荐
Python是一门动态编程语言,它简单而又强大,适用于众多领域。尽管编写Python代码比较容易,但是编写高效且易于维护和复用的代码是一个挑战。
《Python高级编程 第2版》的重点是让你熟悉实践、有用的工具以及标准,这都是Python专业人士每天使用的。首先,你将了解Python3.5中新增加的功能以及可以提高生产力的快速技巧。接下来,你将学习使用这个新版本中的高-级且有用的Python语法元素,以及实现元编程的不同方法。《Python高级编程 第2版》讲解了代码管理工具、编写清晰文档的方法和测试驱动开发,这些都是编写代码的重要因素。通过学习优化的一般原则、查找瓶颈的策略以及应用优化的选定工具,你可以对如何编写高效的代码有更深入的理解。
读完《Python高级编程 第2版》后,你会成为一名可以编写高效且可维护代码的专家。
通过阅读《Python高级编程 第2版》,你将能够:
了解在Python社区中广泛采用的约定和实践;
高效打包Python代码,以便将其应用于社区和生产;
应用在远程系统上自动化部署代码的简单且轻量的方法;
提高代码的质量、可靠性及性能;
在Python中编写并发代码;
使用其他语言编写的代码来扩展Python。
内容简介
Python作为一种高-级程序设计语言,凭借其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言之一。
《Python高级编程 第2版》基于Python3.5版本进行讲解,通过13章的内容,深度揭示了Python编程的高-级技巧。《Python高级编程 第2版》从Python语言及其社区的现状开始介绍,对Python语法、命名规则、Python包的编写、部署代码、扩展程序开发、管理代码、文档编写、测试开发、代码优化、并发编程、设计模式等重要话题进行了全面系统化的讲解。
《Python高级编程 第2版》适合想要进一步提高自身Python编程技能的读者阅读,也适合对Python编程感兴趣的读者参考学习。《Python高级编程 第2版》结合典型且实用的开发案例,可以帮助读者创建高性能的、可靠且可维护的Python应用。作者简介
Micha?Jaworski有着7年Python编程的经验。他还是graceful的创建者,这是一个构建于falcon之上的REST框架。他曾在不同的公司担任过多种角色,从一名普通的全栈开发人员到软件架构师再到一家快节奏创业公司的工程副总裁。他目前是Opera软件公司TVStore(电视应用商店)团队的首-席后端工程师。他在设计高性能的分布式服务方面拥有丰富的经验。他还是一些流行的Python开源项目的活跃贡献者。
TarekZiade?是Mozilla的工程经理,与一个专门用Python为Firefox构建大规模Web应用的团队合作。他对Python打包做出过贡献,而且从早期Zope开始就使用过各种不同的PythonWeb框架。
Tarek还创建了Afpy——法国的Python用户组,并且用法语写过两本关于Python的书。他还在诸如SolutionsLinux、PyCon、OSCON和EuroPython等国际活动中做过多次法语演讲和教学。目录
第1章Python现状1
1.1Python的现状与未来1
1.2Python升级及其原因2
1.3追踪Python最新变化——PEP文档2
1.4当前Python3的普及程度3
1.5Python3和Python2的主要差异4
1.5.1为什么要关注这些差异4
1.5.2主要的语法差异和常见陷阱4
1.5.3用于保持跨版本兼容性的常用工具和技术6
1.6不只是CPython9
1.6.1为什么要关注Python实现10
1.6.2StacklessPython10
1.6.3Jython10
1.6.4IronPython11
1.6.5PyPy11
1.7Python开发的现代方法12
1.8应用层Python环境隔离13
1.8.1为什么要隔离14
1.8.2常用解决方案15
1.8.3选择哪种工具18
1.9系统级环境隔离19
1.9.1使用Vagrant的虚拟开发环境20
1.9.2容器化与虚拟化的对比21
1.10常用的生产力工具21
1.10.1自定义Pythonshell—IPython、bpython、ptpython等22
1.10.2交互式调试器24
1.11有用的资源25
1.12小结25
第2章语法最佳实践——类级别以下26
2.1Python的内置类型26
2.1.1字符串与字节27
2.1.2集合类型30
2.2高级语法39
2.2.1迭代器40
2.2.2yield语句41
2.2.3装饰器44
2.2.4上下文管理器—with语句54
2.3你可能还不知道的其他语法元素58
2.3.1for...else...语句58
2.3.2函数注解59
2.4小结60
第3章语法最佳实践—类级别以上61
3.1子类化内置类型61
3.2访问超类中的方法63
3.2.1Python2中的旧式类与super65
3.2.2理解Python的方法解析顺序66
3.2.3使用super易犯的错误70
3.2.4最佳实践73
3.3高级属性访问模式73
3.3.1描述符74
3.3.2property79
3.3.3槽81
3.4元编程82
3.4.1装饰器—一种元编程方法83
3.4.2类装饰器83
3.4.3使用__new__()方法覆写实例创建过程85
3.4.4元类87
3.4.5一些关于代码生成的提示94
3.5小结100
第4章选择好的名称101
4.1PEP8与命名最佳实践101
4.1.1为何要遵守PEP8以及何时遵守PEP8101
4.1.2超越PEP8—团队的风格指南102
4.2命名风格102
4.3命名指南110
4.3.1用“has”或“is”前缀命名布尔元素111
4.3.2用复数形式命名集合变量111
4.3.3用显式名称命名字典111
4.3.4避免通用名称111
4.3.5避免现有名称112
4.4参数的最佳实践113
4.4.1通过迭代设计构建参数113
4.4.2信任参数和测试114
4.4.3小心使用*args和**kwargs魔法参数115
4.5类的名称117
4.6模块和包的名称117
4.7有用的工具118
4.7.1Pylint118
4.7.2pep8和flake8120
4.8小结120
第5章编写一个包121
5.1创建一个包121
5.1.1Python打包工具的混乱状态122
5.1.2项目配置123
5.1.3自定义setup命令131
5.1.4在开发期间使用包132
5.2命名空间包133
5.2.1为什么有用133
5.2.2PEP420—隐式命名空间包135
5.2.3以前Python版本中的命名空间包136
5.3上传一个包137
5.3.1PyPI—Python包索引137
5.3.2源代码包与构建包139
5.4独立可执行文件142
5.4.1独立可执行文件何时有用143
5.4.2常用工具143
5.4.3可执行包中Python代码的安全性150
5.5小结151
第6章部署代码152
6.1十二要素应用152
6.2用Fabric进行自动化部署154
6.3你自己的包索引或索引镜像158
6.3.1PyPI镜像159
6.3.2使用包进行部署160
6.4常见约定与实践168
6.4.1文件系统层次结构168
6.4.2隔离168
6.4.3使用进程管理工具169
6.4.4应该在用户空间运行应用代码170
6.4.5使用HTTP反向代理171
6.4.6优雅地重新加载进程171
6.5代码检测与监控172
6.5.1记录错误—sentry/raven173
6.5.2监控系统与应用指标175
6.5.3处理应用日志177
6.6小结181
第7章使用其他语言开发Python扩展182
7.1使用C或者C++编写扩展182
7.2为什么你想用扩展184
7.2.1提高关键代码段的性能185
7.2.2集成现有的使用不同语言编写的代码185
7.2.3集成第三方动态库185
7.2.4创建自定义数据类型186
7.3编写扩展186
7.3.1纯C扩展187
7.3.2Cython201
7.4挑战205
7.4.1额外的复杂性205
7.4.2调试206
7.5无扩展的动态库接口206
7.5.1ctypes207
7.5.2CFFI212
7.6小结214
第8章管理代码215
8.1版本控制系统215
8.1.1集中式系统215
8.1.2分布式系统217
8.1.3集中式还是分布式219
8.1.4尽可能使用Git219
8.1.5Git工作流程与GitHub工作流程220
8.2持续的开发过程223
8.2.1持续集成224
8.2.2持续交付227
8.2.3持续部署227
8.2.4常用的持续集成工具228
8.2.5选择正确的工具和常见的陷阱234
8.3小结236
第9章文档化你的项目237
9.17项技术写作规则237
9.1.1两步写作238
9.1.2定位读者238
9.1.3使用简单的风格239
9.1.4限制信息范围240
9.1.5使用现实中的代码示例240
9.1.6使用轻量且充分的方法241
9.1.7使用模板241
9.2reStructuredText入门242
9.2.1章节结构243
9.2.2列表245
9.2.3行内标记246
9.2.4文字块246
9.2.5链接247
9.3构建文档248
9.4构建自己的文档集254
9.4.1构建格局254
9.4.2文档构建与持续集成259
9.5小结260
第10章测试驱动开发261
10.1我不测试261
10.1.1测试开发的原则261
10.1.2什么样的测试265
10.1.3达式Python标准测试工具268
10.2我做测试273
10.2.1unittest陷阱273
10.2.2unittest的替代品274
10.2.3测试覆盖率280
10.2.4仿真与模拟282
10.2.5测试环境与依赖兼容性289
10.2.6文档驱动开发292
10.3小结294
第11章优化——一般原则与分析技术295
11.13个优化规则295
11.1.1首先要能工作295
11.1.2从用户的角度考虑296
11.1.3保持代码的可读性和可维护性297
11.2优化策略297
11.2.1找到另外的罪魁祸首297
11.2.2扩展硬件298
11.2.3编写速度测试298
11.3查找瓶颈299
11.3.1分析CPU使用情况299
11.3.2分析内存使用307
11.3.3分析网络使用情况315
11.4小结316
第12章优化——一些强大的技术317
第13章并发339
第14章有用的设计模式376