The Hitchhiker’s Guide to Python!
Python最佳实践指南!
https://pythonguidecn.readthedocs.io/zh/latest/
结构化您的工程
文档结构
README.rst
LICENSE
setup.py
requirements.txt
sample/__init__.py
sample/core.py
sample/helpers.py
docs/conf.py
docs/index.rst
tests/test_basic.py
tests/test_advanced.py
- 核心代码:
./smaple/ or ./sample.py
- 打包和发布管理:
./setup.py
- 单元测试:
./test_sample.py or ./tests/
模块
不要使用下划线命名空间,而是使用子模块。
# 最好的做法
import modu
[...]
x = modu.sqrt(4) # sqrt显然是属于模块modu的。
动态类型
避免对不同类型的对象使用同一个变量名
# 差
items = 'a b c d' # 首先指向字符串...
items = items.split(' ') # ...变为列表
items = set(items) # ...再变为集合
可变和不可变类型
Python 中一个可能会让初学者惊讶的特性是:字符串是不可变类型。这意味着当需要组合一个 字符串时,将每一部分放到一个可变列表里,使用字符串时再组合 (‘join’) 起来的做法更高效。 值得注意的是,使用列表推导的构造方式比在循环中调用 append() 来构造列表更好也更快。
# 差
# 创建将0到19连接起来的字符串 (例 "012..1819")
nums = ""
for n in range(20):
nums += str(n) # 慢且低效
print nums
# 好
# 创建将0到19连接起来的字符串 (例 "012..1819")
nums = []
for n in range(20