Python代码规范与结构

代码规范

  • 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']
        
      • 面向对象编程
        • 应避免不必要的面向对象编程,可用不同的业务模块来替代
        • 当我们想将一些状态和功能粘合在一起时,自定义类是很有必要的
    • 装饰器
      • 装饰器是一个函数或类,用来装饰函数或方法
      • 相当于对被装饰函数进行嵌套
      • 注意过度嵌套
    • 重复使用命名对效率并没有提升:赋值时无论如何都要创建新的对象。避免对同一个变量名重复赋值
  • 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
      在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值