《Python高手之路 第3版》
这本书重点讲如何用 Python 编写一个大型工程代码的,如何运用软件工程的思维,特别值得需要进阶的初学者阅读,涉及的一些规范到很少在其他书里提到,在这里简单总结下。
我的新书《LangChain编程从入门到实践》 已经开售!推荐正在学习AI应用开发的朋友购买阅读!
外部库的使用建议
- 避免库和实际源代码之间过于耦合,尽量自己写 API,用一个包装器对外部库进行封装,将其与自己的源代码隔离
管理 API 的变化
- 在修改 API 时要通过文档对修改进行详细记录,最少包括以下三点:
- 区分三种时间关系:UTC,服务器所在时区,用户所在时区
- datetime API 总是返回非时区感知的 datetime 对象,所以必要时都应该改转换为时区感知的datetime 对象(包含时区信息的)以便比较之后正确的返回给用户。
1
2
3
4
5
6
7
8import datetime
import pytz
datetime.datetime.now()
datetime.datetime(2019, 11, 13, 8, 25, 26, 407681)
datetime.datetime.now(tz=pytz.utc)
datetime.datetime(2019, 11, 13, 0, 25, 51, 933941, tzinfo=<UTC>)
datetime.datetime.now().isoformat()
'2019-11-13T08:28:48.810858'文档编写
- 采用 Sphinx+reST+Read The Docs方式
- Sphinx 是一种文档工具,新版的Python文档就是由 Sphinx 生成的,并且它已成为Python项目首选的文档工具。
- Sphinx 使用 reStructuredText 作为标记语言,被设计为容易阅读和编写的纯文本。
- 快速上手
1
2
3
4
5
6
7
8pip install sphinx
mkdir sphinx-demo
src下是源码/ doc下构建文件
sphinx-demo
├─doc
└─src
cd doc
sphinx-quickstart软件分发
- 分发工具 setuptools 是目前分发库的主要选择,distlib 改进开发中,是基于 PEP 描述内容实现的。
- 分发格式,PEP 427 定义了新的分发标准,名为 Wheel。
- 包的安装,pip 作为包管理的一站式解决方案。
- 这篇有详细介绍
虚拟环境
- 虚拟环境对自动运行单元测试套件非常有用,而且是一种非常通用的模式,tox 工具用来专门解决这一问题
1
2
3
4virtualenv myenv
source myenv/bin/activate
pip install -r requirements.txt
deactivate单元测试
- 在单元测试中,fixture 表示 “测试前创建,测试后销毁”的(辅助性)组件,unittest 的 setUp,tearDown函数起到类似的作用,在运行某个测试前后执行一组通用的操作。并且可以通过 fixtures 模块,hook上面两个函数,自定义通用测试模块。
《Python高手之路 第3版》