Python开发规范Word文档格式.docx
- 文档编号:21047600
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:13
- 大小:47.74KB
Python开发规范Word文档格式.docx
《Python开发规范Word文档格式.docx》由会员分享,可在线阅读,更多相关《Python开发规范Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
1.3函数
编写函数的几个原则
函数设计要尽量短小,嵌套层次不宜过深;
函数申明应做到合理、简单、易于使用,函数名应能正确反映函数大体功能,参数设计应简洁明了,参数个数不宜过多;
函数参数设计应考虑向下兼容;
一个函数只做一件事,尽量保证函数语句粒度的一致性;
1.4变量名
避免只用大小写来区分不同的对象;
避免使用容易引起混淆的名称,变量名应与所解决的问题域一致;
不要害怕过长的变量名;
常量使用以下划线分隔的大写命名
MAX_OVERFLOW=100
ClassFooBar:
deffoo_bar(self,print_):
print(print_)
变量名尽量小写,如有多个单词,用下划线隔开
if__name__=='
__main__'
:
count=0
school_name='
'
常量采用全大写,如有多个单词,使用下划线隔开
MAX_CLIENT=100
MAX_CONNECTION=1000
CONNECTION_TIMEOUT=600
1.5常量
1.6其他规则
1.所谓”部(Internal)”表示仅模块可用,或者,在类是保护或私有的.
2.用单下划线(_)开头表示模块变量或函数是protected的(使用import*from时不会包含).
3.用双下划线(__)开头的实例变量或方法表示类私有.
4.将相关的类和顶级函数放在同一个模块里.不像Java,没必要限制一个类一个模块.
5.对类名使用大写字母开头的单词(如CapWords,即Pascal风格),但是模块名应该用小写加下划线的方式(如lower_with_under.py).
1.7应该避免的名称
1.单字符名称
2.包/模块名中使用连字符(-)而不使用下划线(_)
3.双下划线开头并结尾的名称(如__init__)
第二章简明概述
2.1编码
如无特殊情况,文件一律使用UTF-8编码
如无特殊情况,文件头部必须加入#--coding:
utf-8--标识
2.2代码格式
2.2.1、缩进统一使用4个空格进行缩进
2.2.2、行宽每行代码尽量不超过80个字符(在特殊情况下可以略微超过80,但最长不得超过120)
2.2.3不要使用反斜杠连接行
2.2.4Python会将圆括号,中括号和花括号中的行隐式的连接起来,你可以利用这个特点.如果需要,你可以在表达式外围增加一对额外的圆括号.
2.2.5对于行连接的情况,你应该要么垂直对齐换行的元素,或者使用4空格的悬挂式缩进(这时第一行不应该有参数):
理由:
这在查看side-by-side的diff时很有帮助
方便在控制台下查看代码
太长可能是设计有缺陷
2.3引号
简单说,自然语言使用双引号,机器标示使用单引号,因此代码里多数应该使用单引号自然语言使用双引号“…”
例如错误信息;
很多情况还是unicode,使用u”你好世界”
机器标识使用单引号‘…’
例如dict里的key
正则表达式使用原生的双引号r”…”
文档字符串(docstring)使用三个双引号“”“……”“”
2.4空行
模块级函数和类定义之间空两行;
classA:
def__init__(self):
pass
defhello(self):
defmain():
pass
```
可以使用多个空行分隔多组相关的函数
函数中可以使用空行分隔出逻辑相关的代码
类成员函数之间空一行;
正确的写法
i=i+1
submitted+=1
x=x*2-1
hypot2=x*x+y*y
c=(a+b)*(a-b)
不推荐的写法
i=i+1
submitted+=1
x=x*2-1
hypot2=x*x+y*y
c=(a+b)*(a-b)
函数的参数列表中,,之后要有空格
defcomplex(real,imag):
不推荐的写法
defcomplex(real,imag):
函数的参数列表中,默认值等号两边不要添加空格
正确的写法
defcomplex(real,imag=0.0):
defcomplex(real,imag=0.0):
左括号之后,右括号之前不要加多余的空格
spam(ham[1],{eggs:
2})
spam(ham[1],{eggs:
2})
字典对象的左括号之前不要多余的空格
dict['
key'
]=list[index]
dict['
]=list[index]
不要为对齐赋值语句而使用的额外空格
x=1
y=2
long_variable=3
2.5空格
1.括号不要有空格
2.不要在逗号,分号,冒号前面加空格,而应该在它们的后面加
3.二元操作符两边都要加上一个空格(=,==,<
>
!
=,in,not...)
4.当’=’用于指示关键字参数或默认参数值时
5.不要用空格来垂直对齐多行间的标记,因为这会成为维护的负担(适用于:
#,=等)
2.6换行
第三章注释规
3.1文档字符串
Python使用文档字符串作为注释方式:
文档字符串是包,模块,类或函数里的第一个语句.这些字符串可以通过对象的doc成员被自动提取,并且被pydoc所用.我们对文档字符串的惯例是使用三重双引号”“”(PEP-257).
一个文档字符串应该这样组织:
1.首先是一行以句号,问号或惊叹号结尾的概述(或者该文档字符串单纯只有一行).接着是一个空行.
2.接着是文档字符串剩下的部分,它应该与文档字符串的第一行的第一个引号对齐.
3.2行注释(PEP8)
行注释是与代码语句同行的注释
1.行注释和代码至少要有两个空格分隔
2.注释由#和一个空格开始,如下:
x=x+1#Compensateforborder
3.3模块注释
每个文件应该最好包含一个许可样板.根据项目使用的许可(例如,Apache2.0,BSD,LGPL,GPL),选择合适的样板.
#-*-coding:
utf-8-*-
#(C)Zoneyet,Inc.2018-2019
#Allrightsreserved
#LicensedunderSimplifiedBSDLicense(seeLICENSE)
3.4函数和方法
一个函数必须要有文档字符串,除非它满足以下条件:
1.外部不可见
2.非常短小
3.简单明了
文档字符串应该包含函数做什么,以及输入和输出的详细描述
文档字符串应该提供足够的信息,当别人编写代码调用该函数时,他不需要看一行代码,只要看文档字符串就可以了
对于复杂的代码,在代码旁边加注释会比使用文档字符串更有意义.
3.5类
类应该在其定义下有一个用于描述该类的文档字符串.如果你的类有公共属性(Attributes),那么文档中应该有一个属性(Attributes)段.并且应该遵守和函数参数相同的格式.
1.1、块注释
“#”号后空一格,段落件用空行分开(同样需要“#”号)
#块注释
#
1.2、行注释
至少使用两个空格和语句分开,注意不要使用无意义的注释
#正确的写法
x=x+1#边框加粗一个像素
3.6块注释和行注释
不推荐的注释
#不推荐的写法(无意义的注释)
x=x+1#x加1
1.3、建议
在代码的关键部分(或比较复杂的地方),能写注释的要尽量写注释
比较重要的注释段,使用多个等号隔开,可以更加醒目,突出重要性
app=create_app(name,options)
#=====================================
#请勿在此处添加getpost等app路由行为!
!
app.run()
3.7TODO注释
1.TODO注释应该在所有开头处包含”TODO”字符串,紧跟着是用括号括起来的你的名字,email地址或其它标识符.然后是一个可选的冒号.接着必须有一行注释,解释要做什么
2.如果你的TODO是”将来做某事”的形式,那么请确保你包含了一个指定的日期(“2009年11月解决”)或者一个特定的事件
第四章其他规
4.1模块导入
1.每个导入应该独占一行
2.模块导入顺序
1标注库导入
2第三方库导入
3应用程序指定导入
3.
importos
importsys
importsys,os
fromsubprocessimportPopen,PIPE
import语句应该使用absoluteimport
fromfoo.barimportBar
from..barimportBar
import语句应该放在文件头部,置于模块说明及docstring之后,于全局变量之前;
import语句应该按照顺序排列,每组之间用一个空行分隔
importmsgpack
importzmq
importfoo
导入其他模块的类定义时,可以使用相对导入
frommyclassimportMyClass
每种分组中,应该根据每个模块的完整包路径按字典序排序,忽略大小写.
如果发生命名冲突,则可使用命名空间
importbar
importfoo.bar
4.2二元运算符换行(PEP8)
#推荐:
运算符和操作数很容易进行匹配
income=(gross_wages
+taxable_interest
+(dividends-qualified_dividends)
-ira_deduction
-student_loan_interest)
4.3其它规
1.不要在行尾加分号,也不要用分号将两条命令放在同一行.
2.除非是用于实现行连接,否则不要在返回语句或条件语句中使用括号.不过在元组两边使用括号是可以的.
3.顶级定义之间空两行,方法定义之间空一行
4.4Pandas使用规
1.pandas数据结构命名df_、se_
2.df取一列,禁止使用df.列名,可以使用df['
列名'
],建议使用df.loc[:
'
]
3.禁止使用df.ix
第五章Django开发规
Django采用的是MTV开发模式
Model(模型):
数据库相关的操作(ORM)
Template(模版):
模板语法--->
将变量(数据库数据)如何巧妙嵌入html页面中
View(视图):
逻辑处理
此外,Django还有一个urls分发器:
路径与视图函数的映射关系
5.1Django目录结构
上图zoneyet=app,webDjango表示project
每个业务模块可以自建一个model和与之对应的view
model目录下主要处理数据
model下每个model对应写一个model的Manager业务逻辑方法
一般原则上每个model对应一个表,对应一个Manager业务处理。
view调用Manager方法实现,最终通过模板或者接口实现功能。
5.2标准化Django模板(Template)区块(block)名称
为了尽量标准化Django模板区块(block)名称,我建议通常情况下使用以下区块名称.
{%blocktitle%}
这个区块用来定义页面的标题.你的base.html模板很可能要在这个tag之外定义站点名字(Site'
sname)(即便使用了Sites框架),以便能够放在所有页面中.
{%blockextra_head%}
我认为这是个非常有用的区块,很多人已经以某种方式在使用了.很多页面经常需要在HTML文档头添加些信息,比如RSS源,Javascript,CSS,以及别的应该放在文档头的信息.你可以,也很可能将会,定义另外专门的区块(比如前面的title区块)来添加文档头的其它部分的信息.
{%blockbody%}
这个tag用来包含页面的整个body部分.这使得你在app中创建的页面能够替换整个页面容,不仅仅是正文容.这种做法虽不常见,但当你需要时,它确实是一个非常方便的tag.你可能还没注意到,我一直尽可能的使tag名字和HTML标签名称保持一致.
{%blockmenu%}
你的菜单(导航栏)应该包含在这个区块中.它是针对站点级的导航,不是每个页面专属的导航菜单.
{%blockcontent%}
这个区块用来放置页面正文容.任何页面正文容都可能不一样.它不包含任何站点导航,信息头,页脚,或其它任何属于base模板的东东.
其它可能的区块
{%blockcontent_title%}
用来指定content区块的"
title"
.比如blog的标题.也可以用来包含content的导航(译注:
比如提纲),或其它类似的东东.大致都是些页面中并非主要容的东东.我不知道这个区块是否应该放到contenttag,并且对应于前面建议的contenttag,是不是还需要一个main_content区块.
{%blockheader%}{%blockfooter%}
任何每个页面都可能修改的文本区域的页面和页脚.
{%blockbody_id%}{%blockbody_class%}
用来设置HTML文档body标签的class或id属性.在设置样式或其它属性时非常有用.
{%block[section]_menu%}{%blockpage_menu%}
这是对应于之前建议的menu区块.用来导航一个章节或页面.
第六章附则
第一条本管理规定自发布之日起执行,由410838107负责解释。
第二条修订记录
日期
版本
状态
修订摘要
2019/04/23
1.0
创建
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 开发 规范
![提示](https://static.bdocx.com/images/bang_tan.gif)