主要内容
虚拟环境
编码规范
项目程序结构化

一,虚拟环境主要目的是为了给不同的工程创建相互独立的运行环境。

在虚拟环境下,每一个工程都有自己的依赖包,而与其他的环境无关

virtualenv的安装和应用

1,pip安装virtualenv
2,pip 安装虚拟环境管理包 virtualenvwrapper-win
3,创建一个存放虚拟环境的目录,目前本机 F/virtualenv
4,配置环境变量 变量名 WORKON_home 值 为上面的路径
之后在cmd中敲workon可以看到本机上已经有的虚拟环境

虚拟环境的一些命令

mkvirtualenv -p python2(指定python版本 dj_py2(虚拟环境名称
创建一个虚拟环境之后会自动进入创建的虚拟环境,退出使用deactivate
进入虚拟环境的标示是路径符前面有虚拟环境名称,
-p 指定环境解释器,电脑中有多版本环境的时候进行指定
workon 虚拟环境名 直接进入某个虚拟环境
commnad list
workon 列出所有虚拟环境
workon name 进入
deactivate 退出当前的虚拟环境
mkvirtualenv name 创建虚拟环境
rmvirtualenv name 删除虚拟环境
包的安装:
虚拟环境中进行,pip install 进行安装

更完善的虚拟环境管理器的引入

pipenv的安装和使用,pipenv继承了pip,virtualenv两者功能,
过去用virtualenv管理requeirements.text文件可能会有问题,pipenv使用pipfile,pipfile.lock前者用来记录项目依赖包列表,后者记录了固定版本的详细依赖包列表,查看依赖关系十分方便。
安装 pip install pipenv
创建虚拟环境,
第一步,创建文件夹 mkdir py3env,第二步进入文件夹 cd py3env,
第三部初始化虚拟环境 pipenv install,
pipenv install 可以安装第三方模块,也可以用来初始化虚拟环境
pipenv install 模块名 —dev dev则代表开发环境
pipfile ,pipfile.lock 用来记录项目依赖包列表,之后可以通过命令快速回复环境
将上述文件拷贝至目标目录然后直接运行 pipenv install 即可
pipenv graph 查看安装的第三方模块
(开发环境的包,是不会直接恢复进去的)除非使用命令 pipenv install —dev
pipenv uninstall 包名,

requeirements.txt文件

里面记录了当前程序的所有依赖包及版本号,起作用是用来在另一个环境上重新构建项目所需要的运行环境依赖

virtualenv 下的依赖导入与导出

到处当前环境到requeirements.txt
pip freeze > requeirements.txt
使用requeirements.txt回复环境
pip install -r requeirements.txt

pipenv的相关使用命令

pipenv —rm 删除虚拟环境
pipenv —where 列出本地工程路径
pipenv —venv 列出虚拟环境路径
pipenv —py 列出虚拟环境的python可执行文件
pipenv graph 查看包依赖
pipenv lock 生成lock文件
pipenv —shell 激活虚拟环境
exit 退出虚拟环境
pipenv只能操作当前路径下的虚拟环境,virtualenv可以操作所有目录下的
.

python代码规范

TODO 6.11
pep8文档,代码样式规范 https://blog.csdn.net/ratsniper/article/details/78954852
pep257 文档字符串相关的约定
pep20 禅
pep8 — 对齐缩进,层级缩进为了区分应当再缩进四格,行连接

pep8,养成多读代码的习惯,获取渠道,git,掘金

Code lay-out 代码布局

1,行缩进,tab键=4个空格
隐式行连接缩进
python 虚拟环境,编码规范 - 图1
1,对齐,2,层级缩进,3,\换行
2,单行字符限制
1,所有行限制的最大字符为79,字符数可以实时在右下角查看
2,没有结构化限制的大块文本,每行限制书为72
3,空行规则
顶层函数和类的定义,前后用两个空行隔开
类里面的方法定义用一个空行隔开。
最外层的类与类,方法与方法之间两个空行
源文件编码格式
py2编码格式默认为ascii码,py3为utf-8,不需要额外定义
import导入规则
导入写在文件顶部,按照下面的顺序分组
1,标准库导入
2,相关第三方库导入
3,本地应用. 库特定导入,
每组导入间加入一个空行
模块级别的内置属性(名字后有双下划綫的)
应该放在模块的文档字符串后,任意import之前
注释规则 详细 pep257
#行内注释,行内注释是与代码语句同行的注释,行内注释和代码至少有两个空格隔开
# 后加一个空格,
‘’’块注释 # 后添加一个空格
空行的话
# 注释
#
# 注释123
多行注释
‘’’注释摘要
注释正文

‘’’

函数体
一般写在函数,模块中,类中进行说明
要求 要为所有的公共模块,函数,类以及方法编写文档说明,
非公共的方法没有必要添加文档注释,但是应该有一个描述方法具体作用的注释,这个注释应该在def那一行之后,提取文档注释:对象的doc属性
命名规范
变量命名,永远不使用小写字母 l 因为与1区分不开, 不用小写的 o 与 0区分不开
函数命名,应该小写,提高可读性可使用下划线分割
驼峰命名法一般只用于兼容之前代码的混合风格,保持向后兼容性
类命名,类命名一般使用首字母大写的约定,在接口被文档化且主要用于调用的情况下,可以使用函数的命名风格代替
注意:对于内置的变量命名有一个单独的约定:大部分内置变量焊死单个单词(或者两个单词连接一起),首字母大写的命名法只用于异常名或者内部的变量
类里面函数和方法函数:始终要讲self作为实例方法的第一个参数,始终要将cls作为静态方法的第一个参数,如果函数的参数名和一有关键字冲突,在最后加单一下划线也比缩写或者随意拼写更好,因此 class_比class更好,
包和模块: 模块名咬断,实用小写,并避免使用特殊符号,比如. 和问号,因此尽量保持模块名简单,以无序分开单词(不推荐在两个单词之间使用下划线
常量:常量通常定义域模块级别并且所有字母都是大写,单词用下划线分开