- ISBN:9787111701040
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:456
- 出版时间:2022-01-01
- 条形码:9787111701040 ; 978-7-111-70104-0
本书特色
适读人群 :Python开发人员以及任何对Python编程感兴趣的读者●本书按照构建一个真实软件的顺序,通过一个贯穿全书的示例,解释其他教程中一般不会讲解的各种Python语言特性:从利用入口点让可重用的控制台脚本成为微服务,一直到高效使用asyncio整理来自多个数据源的数据。在此过程中,本书将介绍基于类型提示的linting、低开销的测试,以及其他自动执行的质量检查,以演示真实的开发过程。 ●通过阅读本书,你将了解以下内容: Python异步编程。插件架构。如何使用类型注解。Python相关测试技术。打包和依赖项管理。 ●具体而言: 第1章和第2章介绍开发环境和相关的工具; 第3~6章涵盖代码打包和依赖项分发、插件架构、接口、聚合服务器等实用内容; 第7章与第8章讨论线程和异步编程相关内容,以及一些高级主题; 第9~12章涉及可视化、调优、错误处理以及数据分析相关主题。 ●本书提供示例代码下载,读者可访问本书GitHub页面https://github.com/MatthewWilkes/advanced-python-development.git,签出Git存储库并按照本书内容一步步学习。
内容简介
●在介绍Python的一些强大特性时,人们常常编造一些示例,以孤立的示例解释各种特性。通过设计并构建真实的应用程序,从设计原型一直演示到开发出符合生产质量要求的应用程序,整个过程不只让你了解各种特性如何工作,还会让你看到它们如何作为更大的系统设计过程的组成部分集成起来。另外,本书还会提供一些有用的注意项,并推荐一些库,这些内容是Python大会问答环节的主要关注点。本书还会讨论现代Python开发的*佳实践和技术,帮助你编写清晰的、易于维护的代码。 ●本书针对的是已经能够使用Python编写简单程序但想要理解什么时候适合使用高级特性的开发人员,让他们能够自如地使用这些高级特性。想要提升自身Python编程水平以及已经具有丰富的经验但希望了解新版本Python特性的开发人员,都特别适合阅读本书。 【本书内容】 本书精心挑选了主题,旨在介绍Python编程的各个不同方面。Python社区作为一个整体没有充分理解或者利用这些方面,而且在指导新人时,不会把它们理所当然地教给新人。这并不是说这些特性一定很复杂,或者很难理解(当然有些特性确实如此),我相信,所有程序员都应该熟悉这些特性,即使他们并不会用到这些特性。 ●第1章将介绍使用Python编写简单程序的不同方式,还会介绍Jupyter记事本以及Python调试器的用法。虽然这两者都是相对来说为人熟知的工具,但很多人只熟悉其中的一个工具,而不是两者都能够熟练使用。本章还会介绍编写命令行接口的不同方式,以及一些有用的第三方库,它们支持简洁的命令行工具开发。 ●第2章将介绍帮助识别代码中的错误的工具,例如自动测试和linting工具。无论是编写大型代码库、很少需要编辑的代码库,还是要吸收第三方贡献的代码库,这些工具都能够让你更容易地写出让自己有信心的代码。这里介绍的工具都是我推荐的工具,但是,本章的关注点是理解它们的优缺点。你可能已经使用过其中的一个或多个工具,并且对于是否适合使用它们有自己的观点。本章将帮助你理解权衡点,从而做出明智的决定。 ●第3章将介绍Python中的代码打包和依赖项分发。对于编写可分发给其他人的应用程序,以及设计能够可靠工作的部署系统来说,这些都是重要的功能。我们将使用这些功能,把独立的脚本转换为可安装的应用程序。 ●第4章将介绍插件架构。这是一种强大的功能。经常可以看到学习插件架构的人使用它,这导致讲解Python的人们对于是否讲解插件架构持谨慎态度。对于我们的示例,插件架构十分适用。本章还将介绍一些用于命令行工具的高级技术,它们能够让调试基于插件的系统变得更加容易。 ●第5章将介绍Web接口和编写复杂函数的技术,如装饰器和闭包。这些技术在Python中已经是习语,但在其他许多编程语言中很难表达。本章还将介绍如何恰当地使用抽象基类。人们常常不建议使用抽象基类,因为学习抽象基类的人倾向于到处使用它们。在特定场景中,有节制地使用抽象基类是有优势的,当把抽象基类与第2章介绍的一些工具结合使用时更是如此。 ●第6章将用另一个重要组件扩展我们的示例,这个组件就是收集数据的聚合服务器。本章还将演示Python程序员会用到的一些*重要的第三方库,例如requests库。 ●第7章将介绍Python中的线程和异步编程。线程常常会导致难以探查的bug。异步代码能够用于类似的任务,但许多Python程序员还没有使用过这种习语,因为使用异步编程时,程序的行为与同步编程有很大区别。本章重点讨论在真实场景中如何使用并发来实现某个结果,而不只是演示一个简单的示例,或者演示异步编程的局限性。本章旨在得到能够在真实场景中使用的代码,并让你彻底理解权衡点,而不是进行独立的技术演示。 ●第8章将更加深入地介绍异步编程,讲解异步代码的测试以及一些第三方库。使用这些库能够编写在异步上下文中处理外部工具(如数据库)的代码。本章还将简要地介绍一些可以用来编写出色API的高级技术,例如上下文管理器和上下文变量,它们对于异步编程很有帮助。 ●第9章返回Jupyter,使用它的一些功能来实现数据可视化和方便的用户交互。我们将介绍如何在Jupyter记事本中把异步代码用于小部件,还将介绍迭代器的高级用法和实现复杂数据类型的多种方式。 ●第10章将详细介绍如何让Python代码运行得更快,如何使用不同类型的缓存,以及这些缓存适用的场景。本章还将介绍如何对应用程序中的各个Python函数进行基准测试,以及如何解读结果以找出速度缓慢的原因。 ●第11章将扩展本书前面介绍过的一些概念,以更加优雅地处理错误。我们将介绍如何修改插件架构,以便无缝地处理错误,同时保留完整的向后兼容性,还将深入介绍如何设计在遇到错误时就处理错误的过程。 ●第12章将使用Python的迭代器和协程来增强我们开发的仪表板,为它们添加一些功能,这些功能不是实现被动的数据收集,而是主动检查收集到的数据,从而允许我们构建包含多个步骤的分析流。
目录
●第1章 原型设计和环境1
1.1 Python中的原型设计1
1.1.1 使用REPL设计原型2
1.1.2 使用Python脚本设计原型5
1.1.3 使用脚本和pdb设计原型6
1.1.4 使用Jupyter设计原型9
1.1.5 本章的原型设计11
1.2 环境设置13
1.3 创建新项目14
1.3.1 设计脚本原型15
1.3.2 安装依赖项18
1.4 导出到.py文件20
1.5 构建命令行接口22
1.5.1 sys模块和argv23
1.5.2 argparse24
1.5.3 click26
1.6 打破界限28
1.6.1 远程内核28
1.6.2 开发不能在本地运行的代码32
1.7 完成后的脚本34
1.8 小结36
更多资源36
●第2章 测试、检查和linting37
2.1 测试40
2.1.1 何时编写测试42
2.1.2 创建格式化函数来提高可测试性43
2.1.3 pytest46
2.2 类型检查56
2.2.1 安装mypy57
2.2.2 添加类型提示58
2.2.3 子类和继承60
2.2.4 泛型类型62
2.2.5 调试以及过度使用类型64
2.2.6 何时使用类型,何时避免使用类型66
2.2.7 将类型提示与代码分离67
2.3 linting68
2.3.1 安装flake8和black69
2.3.2 修复现有代码70
2.3.3 自动运行71
2.3.4 拉取时运行73
2.4 小结74
更多资源75
●第3章 打包脚本76
3.1 术语77
3.2 目录结构77
3.3 安装脚本和元数据80
3.4 依赖项80
3.5 声明式配置82
3.5.1 在setup.py中需要避免的事项82
3.5.2 使用setup.cfg86
3.6 自定义索引服务器88
3.6.1 创建pypiserver90
3.6.2 持久性91
3.6.3 保密性92
3.6.4 完整性92
3.6.5 wheel格式和在安装时执行代码93
3.7 使用入口点安装控制台脚本95
3.8 README、DEVELOP和CHANGES97
3.8.1 Markdown格式97
3.8.2 reStructuredText格式99
3.8.3 README101
3.8.4 CHANGES.md和版本化101
3.9 上游依赖项版本锁定103
3.9.1 宽松锁定103
3.9.2 严格锁定104
3.9.3 应该使用哪种锁定方案105
3.10 上传版本105
3.11 小结107
更多资源107
●第4章 从脚本到框架109
4.1 编写传感器插件110
4.2 添加新的命令行选项113
4.2.1 子命令113
4.2.2 命令选项116
4.2.3 错误处理117
4.2.4 通过实参类型将解析工作
交给click120
4.2.5 自定义click实参类型121
4.2.6 常用选项123
4.3 允许使用第三方传感器插件124
4.3.1 使用固定名称检测插件126
4.3.2 使用入口点检测插件127
4.3.3 配置文件129
4.3.4 环境变量132
4.3.5 apd.sensors与类似程序的方法对比133
4.4 小结133
更多资源134
●第5章 其他接口136
5.1 Web微服务136
5.1.1 WSGI137
5.1.2 API设计142
5.1.3 Flask144
5.1.4 Python装饰器146
5.1.5 测试视图函数157
5.1.6 部署159
5.2 将软件作为第三方软件扩展160
5.2.1 与其他开发人员就签名达成一致165
5.2.2 抽象基类167
5.2.3 后备策略170
5.2.4 综合运用174
5.3 修复代码中的序列化问题176
5.4 版本化API180
5.5 小结183
更多资源183
●第6章 聚合过程185
6.1 cookiecutter185
6.2 创建聚合包189
6.2.1 数据库类型190
6.2.2 示例192
6.2.3 对象–关系映射器193
6.2.4 版本化数据库197
6.2.5 加载数据202
6.3 新技术209
6.3.1 数据库210
6.3.2 自定义特性行为210
6.3.3 生成器210
6.4 小结210
更多资源211
●第7章 并行和异步212
7.1 非阻塞IO213
7.2 多线程与多进程218
7.2.1 低级线程219
7.2.2 字节码222
7.2.3 锁与死锁225
7.2.4 避免全局状态229
7.2.5 其他同步原语234
7.2.6 ProcessPoolExecutor241
7.2.7 使代码使用多线程241
7.3 asyncio242
7.3.1 async def242
7.3.2 await243
7.3.3 async for245
7.3.4 async with249
7.3.5 异步锁定原语249
7.3.6 使用同步库251
7.3.7 使代码异步化252
7.4 比较255
7.5 做出选择255
7.6 小结257
更多资源258
●第8章 高级asyncio259
8.1 测试异步代码259
8.1.1 测试代码260
8.1.2 模拟对象以方便进行单元测试267
8.2 异步数据库276
8.2.1 经典SQLAlchemy风格277
8.2.2 使用run_in_executor280
8.2.3 查询数据282
8.2.4 避免复杂查询284
8.2.5 其他方案293
8.3 异步代码中的全局变量294
8.4 小结296
更多资源297
●第9章 查看数据298
9.1 查询函数298
9.1.1 过滤数据303
9.1.2 多层迭代器306
9.1.3 其他过滤器312
9.1.4 测试查询函数313
9.2 显示多个传感器316
9.3 处理数据319
9.4 与Jupyter小部件进行交互323
9.4.1 增加嵌套的同步和异步代码324
9.4.2 进行整理329
9.5 持久端点330
9.6 绘制地图和地理数据330
9.6.1 新的图类型333
9.6.2 在apd.aggregation中支持地图类型的图335
9.6.3 使用新配置绘制自定义地图337
9.7 小结339
更多资源340
●第10章 加快速度341
10.1 优化函数341
10.1.1 性能分析和线程343
10.1.2 解读profile报表345
10.1.3 其他性能分析器348
10.2 优化控制流352
10.2.1 可视化性能分析数据356
10.2.2 缓存360
10.3 小结369
更多资源369
●第11章 容错371
11.1 错误处理371
11.1.1 从容器获取项372
11.1.2 自定义异常377
11.1.3 涉及多个异常的堆栈跟踪380
11.1.4 测试异常处理383
11.2 警告388
11.3 日志393
11.3.1 嵌套记录器394
11.3.2 自定义动作396
11.3.3 记录配置400
11.3.4 其他处理程序402
11.4 设计时规避问题402
11.5 小结407
更多资源408
●第12章 回调与数据分析409
12.1 生成器的数据流409
12.1.1 使用自己的输出的生成器411
12.1.2 增强的生成器414
12.1.3 队列420
12.1.4 选择控制流422
12.2 动作的结构423
12.2.1 分析协程424
12.2.2 摄入数据429
12.2.3 运行分析进程432
12.3 进程状态434
12.4 扩展可用的动作439
12.5 小结441
更多资源442
后记443
作者简介
马修-威尔克斯(Matthew Wilkes)一名经验丰富的开发人员,他使用Python开发Web项目已经有15年了。除了开发软件外,他还长期为Python开发人员提供指导,积极推动开源软件的发展,并为许多流行的框架提交过代码。他对开源软件的贡献主要集中在数据库的细节以及Web框架的安全交互方面。
-
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
全图解零基础word excel ppt 应用教程
¥12.0¥48.0 -
机器学习
¥59.4¥108.0 -
深度学习的数学
¥43.5¥69.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥37.7¥65.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥77.4¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
UN NX 12.0多轴数控编程案例教程
¥25.8¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥84.5¥119.0 -
PREMIERE PRO 2023全面精通:视频剪辑+颜色调整+转场特效+字幕制作+案例实战
¥69.3¥99.0