《Python高手之路 第3版》

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

我的新书《LangChain编程从入门到实践》 已经开售!推荐正在学习AI应用开发的朋友购买阅读!
LangChain编程从入门到实践

外部库的使用建议

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

    管理 API 的变化

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

      时区陷阱问题

  • 区分三种时间关系:UTC,服务器所在时区,用户所在时区
  • datetime API 总是返回非时区感知的 datetime 对象,所以必要时都应该改转换为时区感知的datetime 对象(包含时区信息的)以便比较之后正确的返回给用户。
    1
    2
    3
    4
    5
    6
    7
    8
    >>> 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 作为标记语言,被设计为容易阅读和编写的纯文本。
  • 快速上手
    1
    2
    3
    4
    5
    6
    7
    8
    pip 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
    4
    virtualenv myenv
    source myenv/bin/activate
    pip install -r requirements.txt
    deactivate

    单元测试

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

莫尔索

发布于

2020-03-02

更新于

2024-05-19

许可协议

评论