代码规范
- PEP8
- pylint
- Google Style Guid
- 其它的一些说明
- 对于
config.py
,不要在程序中直接import config
写死,可通过main
函数参数的形式来增加灵活性
- 对于
代码效率
代码结构
- Python最佳实践指南2018
- Kenneth Reitz 建议的Demo
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
- 模块是一个仓库的核心
- 如果该模块内只有一个文件,可以直接将该文件放在仓库根目录
- 模块不应该放在一个模糊的
src
目录或者随意的子目录
- 包
- 任何一个带有
__init__.py
文件的目录均被认为是Python的包。该文件目的是收集所有包范围的定义from .base import LinearRegression __all__ = ['LinearRegression']
- 面向对象编程
- 应避免不必要的面向对象编程,可用不同的业务模块来替代
- 当我们想将一些状态和功能粘合在一起时,自定义类是很有必要的
- 任何一个带有
- 装饰器
- 装饰器是一个函数或类,用来装饰函数或方法
- 相当于对被装饰函数进行嵌套
- 注意过度嵌套
- 重复使用命名对效率并没有提升:赋值时无论如何都要创建新的对象。避免对同一个变量名重复赋值
- Kenneth Reitz 建议的Demo
- stackoverflow:what is the best project structure for a python application
- 若项目名为
foo
,则该项目的仓库结构如下
Foo/ |-- bin/ # 存放项目的一些可执行文件 | |-- foo | |-- foo/ # 所有的源码均在此处,代码模块化,入库为main.py | |-- tests/ | | |-- __init__.py | | |-- test_main.py | | | |-- __init__.py | |-- main.py | |-- docs/ # 文档,包括配置文件 | |-- conf.py | |-- abc.rst | |-- setup.py |-- requirements.txt |-- README
- 说明:对于该代码结构,我比较认可
Kenneth Reitz 建议的Demo
中对测试代码的放置,独立放置,而非与源码一块
- 若项目名为
- 开源代码的仓库结构
- pandas
- sklearn
- pandas