跳转到正文
莫尔索随笔
返回

Python 高手之路:Python 进阶开发规范与最佳实践。

预计 3 分钟

第一时间捕获有价值的信号

本书总结《Python高手之路》核心要点,聚焦大型 Python 工程代码的软件工程实践。内容涵盖API管理、时区处理、文档编写、包分发与测试等,助你掌握 Python 进阶开发规范与最佳实践。

核心内容

这本书重点讲如何用 Python 编写一个大型工程代码的,如何运用软件工程的思维,特别值得需要进阶的初学者阅读,涉及的一些规范到很少在其他书里提到,在这里简单总结下。

外部库的使用建议

  • 避免库和实际源代码之间过于耦合,尽量自己写 API,用一个包装器对外部库进行封装,将其与自己的源代码隔离

管理 API 的变化

  • 在修改 API 时要通过文档对修改进行详细记录,最少包括以下三点:
    • 记录新的接口;
    • 记录废除的旧接口;
    • 记录如何升级到新接口;

时区陷阱问题

  • 区分三种时间关系:UTC,服务器所在时区,用户所在时区
  • datetime API 总是返回非时区感知的 datetime 对象,所以必要时都应该改转换为时区感知的datetime 对象(包含时区信息的)以便比较之后正确的返回给用户。
>>> import 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 作为标记语言,被设计为容易阅读和编写的纯文本。
  • 快速上手
pip install sphinx
mkdir sphinx-demo
# src下是源码/ doc下构建文件
sphinx-demo
├─doc
└─src
cd doc
sphinx-quickstart

软件分发

  • 分发工具 setuptools 是目前分发库的主要选择,distlib 改进开发中,是基于 PEP 描述内容实现的。
  • 分发格式,PEP 427 定义了新的分发标准,名为 Wheel。
  • 包的安装,pip 作为包管理的一站式解决方案。
  • 这篇有详细介绍

虚拟环境

  • 虚拟环境对自动运行单元测试套件非常有用,而且是一种非常通用的模式,tox 工具用来专门解决这一问题
virtualenv myenv
source myenv/bin/activate
pip install -r requirements.txt
deactivate

单元测试

  • 在单元测试中,fixture 表示 “测试前创建,测试后销毁”的(辅助性)组件,unittest 的 setUp,tearDown函数起到类似的作用,在运行某个测试前后执行一组通用的操作。并且可以通过 fixtures 模块,hook上面两个函数,自定义通用测试模块。