-
内容大纲
本书按照构建一个真实软件的顺序,通过一个贯穿全书的示例,解释其他教程中一般不会讲解的各种Python语言特性:从利用入口点让可重用的控制台脚本成为微服务,一直到高效使用asvncio整理来自多个数据源的数据。在此过程中,本书将介绍基于类型提示的linting、低开销的测试,以及其他自动执行的质量检查,以演示真实的开发过程。
具体而言,第1章和第2章介绍开发环境和相关的工具;第3~6章涵盖代码打包和依赖项分发、插件架构、接口、聚合服务器等实用内容;第7章与第8章讨论线程和异步编程相关内容,以及一些高级主题;第9~12章涉及可视化、调优、错误处理以及数据分析相关主题。 -
作者介绍
马修·威尔克斯(Matthew Wilkes),一名经验丰富的开发人员,他使用Python开发Web项目已经有15年了。除了开发软件外,他还长期为Python开发人员提供指导,积极推动开源软件的发展,并为许多流行的框架提交过代码。他对开源软件的贡献主要集中在数据库的细节以及Web框架的安全交互方面。 -
目录
前言
致谢
审校者简介
第1章 原型设计和环境
1.1 Python中的原型设计
1.1.1 使用REPL设计原型
1.1.2 使用Python脚本设计原型
1.1.3 使用脚本和pdb设计原型
1.1.4 使用Jupyter设计原型
1.1.5 本章的原型设计
1.2 环境设置
1.3 创建新项目
1.3.1 设计脚本原型
1.3.2 安装依赖项
1.4 导出到.py文件
1.5 构建命令行接口
1.5.1 sys模块和argv
1.5.2 argparse
1.5.3 click
1.6 打破界限
1.6.1 远程内核
1.6.2 开发不能在本地运行的代码
1.7 完成后的脚本
1.8 小结
更多资源
第2章 测试、检查和linting
2.1 测试
2.1.1 何时编写测试
2.1.2 创建格式化函数来提高可测试性
2.1.3 pytest
2.2 类型检查
2.2.1 安装mypy
2.2.2 添加类型提示
2.2.3 子类和继承
2.2.4 泛型类型
2.2.5 调试以及过度使用类型
2.2.6 何时使用类型,何时避免使用类型
2.2.7 将类型提示与代码分离
2.3 linting
2.3.1 安装flake8和black
2.3.2 修复现有代码
2.3.3 自动运行
2.3.4 拉取时运行
2.4 小结
更多资源
第3章 打包脚本
3.1 术语
3.2 目录结构
3.3 安装脚本和元数据
3.4 依赖项
3.5 声明式配置
3.5.1 在setup.py中需要避免的事项
3.5.2 使用setup.cfg
3.6 自定义索引服务器
3.6.1 创建pypiserver
3.6.2 持久性
3.6.3 保密性
3.6.4 完整性
3.6.5 wheel格式和在安装时执行代码
3.7 使用入口点安装控制台脚本
3.8 README、DEVELOP和CHANGES
3.8.1 Markdown格式
3.8.2 reStructuredText格式
3.8.3 README
3.8.4 CHANGES.md和版本化
3.9 上游依赖项版本锁定
3.9.1 宽松锁定
3.9.2 严格锁定
3.9.3 应该使用哪种锁定方案
3.10 上传版本
3.11 小结
更多资源
第4章 从脚本到框架
4.1 编写传感器插件
4.2 添加新的命令行选项
4.2.1 子命令
4.2.2 命令选项
4.2.3 错误处理
4.2.4 通过实参类型将解析工作
交给click
4.2.5 自定义click实参类型
4.2.6 常用选项
4.3 允许使用第三方传感器插件
4.3.1 使用固定名称检测插件
4.3.2 使用入口点检测插件
4.3.3 配置文件
4.3.4 环境变量
4.3.5 apd.sensors与类似程序的方法对比
4.4 小结
更多资源
第5章 其他接口
5.1 Web微服务
5.1.1 WSGI
5.1.2 API设计
5.1.3 Flask
5.1.4 Python装饰器
5.1.5 测试视图函数
5.1.6 部署
5.2 将软件作为第三方软件扩展
5.2.1 与其他开发人员就签名达成一致
5.2.2 抽象基类
5.2.3 后备策略
5.2.4 综合运用
5.3 修复代码中的序列化问题
5.4 版本化API
5.5 小结
更多资源
第6章 聚合过程
6.1 cookiecutter
6.2 创建聚合包
6.2.1 数据库类型
6.2.2 示例
6.2.3 对象–关系映射器
6.2.4 版本化数据库
6.2.5 加载数据
6.3 新技术
6.3.1 数据库
6.3.2 自定义特性行为
6.3.3 生成器
6.4 小结
更多资源
第7章 并行和异步
7.1 非阻塞IO
7.2 多线程与多进程
7.2.1 低级线程
7.2.2 字节码
7.2.3 锁与死锁
7.2.4 避免全局状态
7.2.5 其他同步原语
7.2.6 ProcessPoolExecutor
7.2.7 使代码使用多线程
7.3 asyncio
7.3.1 async def
7.3.2 await
7.3.3 async for
7.3.4 async with
7.3.5 异步锁定原语
7.3.6 使用同步库
7.3.7 使代码异步化
7.4 比较
7.5 做出选择
7.6 小结
更多资源
第8章 高级asyncio
8.1 测试异步代码
8.1.1 测试代码
8.1.2 模拟对象以方便进行单元测试
8.2 异步数据库
8.2.1 经典SQLAlchemy风格
8.2.2 使用run_in_executor
8.2.3 查询数据
8.2.4 避免复杂查询
8.2.5 其他方案
8.3 异步代码中的全局变量
8.4 小结
更多资源
第9章 查看数据
第10章 加快速度
第11章 容错
第12章 回调与数据分析
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...