Effective python(七):协作开发

一,文档字符串

1, 在函数,类,模块(顶端编写)下使用三个"""括起来内容即可

2, 文档被关联到__doc__属性中,应尽量充分的描述其用法,作用,异常等等

二,使用包来组织模块,提供稳固API

1, 模块的__all__属性是一个列表,其中的每个值都能作为本模块的公共API,外部以from model import *的形式引入__all__中的属性,若未提供__all__则只会引入public属性即没有下划线前缀的属性,一般内部开发没有必要用到

2, 引入包中的模块from 包名 import 模块

三,对自己编写的模块定义根异常,与普通异常隔离,便于发现代码是错在模块还是错在用法上

四,打破循环依赖

1, 即a要引入b,但b也需要引入a

2, Python执行import语句时的机制

  1. 在sys.path的路径中搜寻待引入模块
  2. 从模块中加载代码,确保代码能够被编译
  3. 创建于该模块对应的空对象
  4. 把空的模块对象添加到sys.modules
  5. 运行模块对象中的代码,定义其内容

3,重构方法

  1. 调整引入顺序,在执行完所必须的代码后再引入
  2. 动态引入,在需要执行的函数内进行引入(不推荐,增加开销)
  3. 先引入,再配置,最后运行,即先定义空对象,再引入完成后,利用configure函数去依次初始化配置各个模块

五,pyvenv工具,虚拟环境隔离项目,重建依赖

1,python3.4以后pyvenv内置于python,可以通过命令行调用

2,pyvenv /目录新建虚拟环境

3,cd 目录source bin/activate激活虚拟环境

4,deactivate取消激活虚拟环境

5,pip3 freeze > requirements.txt导出依赖

6,pip3 install -r 目录/requirements.txt安装依赖

7,注意:创建的环境目录是以硬编码的形式写死的,移动目录会造成虚拟环境失效,所以在迁移项目的时候一般需要重新创建一个新的虚拟环境并重新安装依赖

8,python3.4之前的版本pyvenv叫virtualenv

posted @ 2020-04-02 16:08  石天放  阅读(303)  评论(0编辑  收藏  举报