开发实践 - noonecare/python GitHub Wiki
-
测试驱动编程(Test-Driven Development, TDD) 也叫测试优先编程(Test-First development)。要求 先编写测试代码,再去实现代码,对所有代码进行单元测试。如果只是一次性的任务,只是一个简单的脚本,不必写测试代码。
-
设计:
- GRASP: 基于职责设计对象
- 提前设计好接口,写测试用例。python 是动态语言,参数的类型常常成为问题,影响开发效率。
- 约定概念名称,如果必要准备项目概念词典。
- 迭代
- 需求不断更改。对于实际项目,没法提前定义所有的需求。
- 每次迭代,找出 重要的,整体性的,高风险的需求优先实现。
- 时间定量,一次迭代不要持续太长时间。
- 每次迭代,提供可执行代码。
- 每次迭代时,应该花时间讨论上次迭代时出现的问题。
- 迭代时,应该产出制品(artifact),不过制品不需要特别精美。
- 所有制品是可选的。
- 强调 沟通反馈。
- 引用 module 的路径
- site-packages 目录
- .pth 文件
- PYTHONPATH 环境变量(尽量少用,因为不同用户的 PYTHONPATH 很可能不同,会导致别人没法用你写的代码)
- sys.path 是当前引用包的路径
- python 安装 module
pip install <module>easy_install <module>tar zxvf <module>.tar.gz
cd <module>
python setup.py install在一台共享的服务器上, 你不是管理员,但是你需要安装 module, 该怎么做。
- 通知服务器管理员,征得服务器管理员的同意(一般如果管理员觉得绝大多数用户都会用到这个 module 的话,管理员应该同意安装;如果只有少量用户需要用到这个 module 则不必安装),由服务器管理员代为安装 module。
- 自己创建一个 virtual python interrepter, 可以使用。
- 长时间运行的 application, 比如长时间运行的服务器,也建议建立单独的 virutal intepreter ,以保证后来人对于python Interpreter 的更改,不至于影响 application 的稳定运行。
pyenv <interrepter_name>or
virutalenv <interrepter_name>据我实践, pyenv 安装出的虚拟环境有时候不带 pip, easy_install 这些装 module 的工具,所以使用起来不方便,推荐使用 virtualenv 创建仅供个人使用的 python interrepter。
- 当前目录
在写程序时常常会因为路径问题导致程序无法运行, 遵从以下规范可以避免因为路径浪费时间:
- 一个 project 中所有的可执行文件都以 project 的 root 目录作为 根目录
- python 包中不变的资源文件 使用 file 变量写成相对路径
- python 包内引用使用
from .[<parent_module>] import <module>- 打包
- 如果写的是一个类库,应当打成 egg 包。
- 最好把 egg 包发布到 python 源( python setup.py bdist --upload), 最好再配上 sphinx 写的文档。
- 数据分析,探索数据
- Ipython NoteBook 适合交互式地做数据分析。