版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Python开发规范总则概况:Python风格规范,包含了部分 Google风格规范和PEP8规范。包括Django项目目录结构的一些规范,为适应我们实际需求,提高开发中代码更加可观性、易读性拟定的规范。第一章命名规范1.1模块模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况)#正确的模块名import decoder import html_ parser#不推荐的模块名import Decoder1.2类名class类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头Farm():P assclass Ani malFarm
2、(Farm):p assclass _P rivateFarm(Farm):p ass将相关的类和顶级函数放在同一个模块里.不像Java,没必要限制一个类一个模块1.3函数函数名一律小写,如有多个单词,用下划线隔开 def r un():p assdef run _with_e nv():p ass私有函数在函数前加一个下划线class Person。:def _p rivate_fu nc():p ass编写函数的几个原则函数设计要尽量短小,嵌套层次不宜过深;函数申明应做到合理、简单、易于使用,函数名应能正确反映函数大体功能, 参数设计应简洁明了,参数个数不宜过多;函数参数设计应考虑向下兼容
3、;一个函数只做一件事,尽量保证函数语句粒度的一致性;1.4变量名避免只用大小写来区分不同的对象;避免使用容易引起混淆的名称,变量名应与所解决的问题域一致;不要害怕过长的变量名; 变量名尽量小写,如有多个单词,用下划线隔开 if _name_ = '_main_':count = 0school_ name ="常量采用全大写,如有多个单词,使用下划线隔开MAX_CLIENT = 100MAX_CONNECTION = 1000 CONNECTIONTIMEOUT = 6001.5常量常量使用以下划线分隔的大写命名MAX_OVERFLOW = 100Class FooB
4、ar:def foo_bar(self, prin t_): pnnt(print_)1.6其他规则1. 所谓”内部(Internal)”表示仅模块内可用,或者,在类内是保护或私有的.2. 用单下划线(_)开头表示模块变量或函数是 Protected的(使用import * from 时不会包含).3. 用双下划线(_)开头的实例变量或方法表示类内私有.4. 将相关的类和顶级函数放在同一个模块里.不像Java,没必要限制一个类 一个模块.5. 对类名使用大写字母开头的单词(如Cap Words,即P asca l风格),但是模块 名应该用小写加下划线的方式(如lower_with_under.
5、py).1.7应该避免的名称1. 单字符名称2. 包/模块名中使用连字符(-)而不使用下划线(_)3. 双下划线开头并结尾的名称(如_init_)第二章简明概述2.1编码如无特殊情况,文件一律使用UTF-8编码如无特殊情况,文件头部必须加入#-coding:utf-8-标识2.2代码格式2.2.1、缩进2.2.2、行宽80,统一使用4个空格进行缩进每行代码尽量不超过80个字符(在特殊情况下可以略微超过但最长不得超过120)223不要使用反斜杠连接行2.2.4 Python会将圆括号,中括号和花括号中的行隐式的连接起来,你可以利用这个特点.如果需要,你可以在表达式外围增加一对额外的圆括 号.2.
6、2.5对于行连接的情况,你应该要么垂直对齐换行的元素,或者使用4空格的悬挂式缩进(这时第一行不应该有参数):理由:这在查看side-by-side的diff时很有帮助方便在控制台下查看代码太长可能是设计有缺陷2.3引号简单说,自然语言使用双引号,机器标示使用单引号,因此 代码里 多数应该使 用单引号自然语言使用双引号“”例如错误信息;很多情况还是uni code,使用u”你好世界”机器标识使用单引号例如dict里的key正则表达式 使用原生的双引号r” 文档字符串(docstri ng)使用三个双引号2.4空行模块级函数和类定义之间空两行; 类成员函数之间空一行;class A:def _in
7、it_(self):p assdef hello(self): p assdef main(): p ass可以使用多个空行分隔多组相关的函数 函数中可以使用空行分隔出逻辑相关的代码正确的写法i = i + 1 submitted += 1x = x * 2 - 1hyp ot2 = 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)函数的参数列表中,之后要有空格 正确的写法def compi ex(real, imag):p
8、ass不推荐的写法def compi ex(real,imag): p ass函数的参数列表中,默认值等号两边不要添加空格 正确的写法def compi ex(real, imag=0.0):p ass不推荐的写法def compi ex(real, imag = 0.0): p ass左括号之后,右括号之前不要加多余的空格 正确的写法sp am(ham1, eggs: 2)不推荐的写法spam( ham1, eggs : 2 )字典对象的左括号之前不要多余的空格 正确的写法dict'key' = listi ndex不推荐的写法diet 'key' = lis
9、t i ndex不要为对齐赋值语句而使用的额外空格 正确的写法x = 1y = 2Ion g_variable = 3不推荐的写法x= 1y= 2Ion g_variable = 32.5空格1.括号内不要有空格2.3.4.不要在逗号,分号,冒号前面加空格,而应该在它们的后面加 二元操作符两边都要加上一个空格(=, 当用于指示关键字参数或默认参数值时<,>,!=, in, not .)5. 不要用空格来垂直对齐多行间的标记,因为这会成为维护的负担(适用于:,#,=等)2.6换行第三章注释规范3.1文档字符串:文档字符串是包,模块,类或函数里 doc成员被自动提取,并且被Pydoc”
10、“” (PEP-257 ).Python使用文档字符串作为注释方式 的第一个语句.这些字符串可以通过对象的 所用.我们对文档字符串的惯例是使用三重双引号一个文档字符串应该这样组织:1. 首先是一行以句号,问号或惊叹号结尾的概述(或者该文档字符串单纯只 有一行).接着是一个空行.2. 接着是文档字符串剩下的部分,它应该与文档字符串的第一行的第一个 引号对齐.3.2行内注释(PEP8)行内注释是与代码语句同行的注释1. 行内注释和代码至少要有两个空格分隔2. 注释由#和一个空格开始,如下:# Compen sate for border3.3模块注释每个文件应该最好包含一个许可样板根据项目使用的许
11、可(例如,Apache2.0, BSD, LG PL, GP L), 选择合适的样板.# -*- coding: utf-8 -*- # (C) Zon eyet, I nc. 2018-2019 # All rights reserved # Lice nsed un der Sim plified BSD Lice nse (see LICENSE)3.4函数和方法一个函数必须要有文档字符串,除非它满足以下条件:1. 外部不可见2. 非常短小3. 简单明了文档字符串应该包含函数做什么,以及输入和输出的详细描述文档字符串应该提供足够的信息,当别人编写代码调用该函数时,他不需 要看一行代码,只
12、要看文档字符串就可以了对于复杂的代码,在代码旁边加注释会比使用文档字符串更有意义.3.5类类应该在其定义下有一个用于描述该类的文档字符串.如果你的类有公共属性(Attributes),那么文档中应该有一个属性 (Attributes)段.并且应该遵守和函 数参数相同的格式.3.6块注释和行注释1.1、块注释“ # ”号后空一格,段落件用空行分开(同样需要“#”号)块注释块注释块注释块注释1.2、行注释至少使用两个空格和语句分开,注意不要使用无意义的注释#正确的写法x = x + 1#边框加粗一个像素不推荐的注释#不推荐的写法(无意义的注释)x = x + 1 # x 力口 11.3、建议在代码
13、的关键部分(或比较复杂的地方),能写注释的要尽量写注释 比较重要的注释段,使用多个等号隔开,可以更加醒目,突出重要性 app = create_a pp(n ame, op ti ons)#=#请勿在此处添加get post等app路由行为!!#=if _name_ = '_main app.run()3.7 TODO注释1. TODO注释应该在所有开头处包含” TODO ”字符串,紧跟着是用括号括起来的你的名字,email地址或其它标识符.然后是一个可选的冒号.接着必须有一行注释,解释要做什么2. 如果你的TODO是”将来做某事”的形式,那么请确保你包含了一个指定的日期(“2009年
14、11月解决”)或者一个特定的事件第四章其他规范4.1模块导入1. 每个导入应该独占一行2. 模块导入顺序1标注库导入2第三方库导入3应用程序指定导入3. 每种分组中,应该根据每个模块的完整包路径按字典序排序,忽略大小写.如果发生命名冲突,则可使用命名空间import barim正确的写法import os import sys 不推荐的写法import sys,os正确的写法from sub pro cess import Popen, PIPE import 语句应该使用 absolute import 正确的写法from foo.bar import Bar不推荐的写法from .bar
15、import Barimport语句应该放在文件头部,置于模块说明及docstring之后,于全局变量之前;import语句应该按照顺序排列,每组之间用一个空行分隔import osimport sysimport msgp ackimport zmqimport foo导入其他模块的类定义时,可以使用相对导入from myclass import MyClass4.2二元运算符换行(PEP8)#推荐:运算符和操作跖艮容易进行匹配in come = (gross_wages+ taxablenterest + (divide nds - qualified_divide nds) -ira d
16、eduction -stude nt_loa n_in terest)4.3其它规范1. 不要在行尾加分号,也不要用分号将两条命令放在同一行.2. 除非是用于实现行连接,否则不要在返回语句或条件语句中使用括号 不过在元组两边使用括号是可以的.3. 顶级定义之间空两行,方法定义之间空一行4.4Pandas使用规范1.pan das数据结构命名df_、se_2.df取一列,禁止使用df.列名,可以使用df'列名',建议使用df.loc:,3.'列名'禁止使用df.ix第五章Django开发规范Django采用的是MTV开发模式Model(模型):数据库相关的操作(O
17、RM)Temp late模版):模板语法-> 将变量(数据库数据)如何巧妙嵌入 html页面中View(视图):逻辑处理此外,Django还有一个urls分发器:路径与视图函数的映射关系5.1Dja ngo目录结构V L webDjango E;pytho 115>/4阴已:3©静疮丈彳牛>C static -k templates t-i' tirymce 2 venv hbwry fcotij TonV If 模板文'牛第三方插ftipypt 二_migrstiom二=_init_.py mods- dmir屮 g I o b a Imodc P
18、joyL MyHclpcnpyr- u:»ciin(jtTiuJcLPt viewddminapCl C on mon關 globdISew.p、?. testviftvs.py 衫 uH£py * Model文件统一放这里當文件统一放 这里统一级别目录皿1上图 zoneyet=app, webDjango 表示 project每个业务模块可以自建一个 model和与之对应的view model目录下主要处理数据model下每个model对应写一个 model的Manager业务逻辑方法 一般原则上每个model对应一个表,对应一个Manager业务处理。 view调用Ma
19、nager方法实现,最终通过模板或者接口实现功能。5.2标准化Django模板(Template)区块(block)名称% block title %这个区块用来定义页面的标题 定义站点名字(Site's name) 中.为了尽量标准化 Django模板区块(block)名称,我建议通常情况下使用以下区 块名称.你的base.html模板很可能要在这个tag之外(即便使用了 Sites框架),以便能够放在所有页面% block extra_head %,很多人已经以某种方式在使用了 .很多页面经常我认为这是个非常有用的区块需要在HTML文档头添加些信息,比如RSS源,Javascript, CSS,以及别的应该 放在文档头的信息.你可以,也很可能将会,定义另外专门的区块 (比如前面的 title区块)来添加文档头的其它部分的信息.% block body %这个tag用来包含页面的整个 body部分.这使得你在app中创建的页面 能 够替换整个页面内容,不仅仅是正文内容.这种做法虽不常见,但当你需要时,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第一节 跑教学设计中职基础课-全一册-高教版(2023)-(体育与健康)-66
- 第三单元第二课 在挫折中成长 教学设计 青岛版初中心理健康八年级下册
- 2025门牌工作制度
- ICU医疗组工作制度
- 一人双岗工作制度汇编
- 万达品质管理工作制度
- 三无患者救治工作制度
- 上海市博士后工作制度
- 专业达标评审工作制度
- 东营曜康医药工作制度
- 交通安全设施故障应急措施
- 中国古代工匠精神人物
- 养猪场自动化喂养系统建设方案
- 2025特变电工校园招聘200人笔试历年参考题库附带答案详解
- 移动式操作平台专项施工方案(二期)
- 2025年红色文化知识竞赛试题题及答案
- 文旅局考试试题及答案
- 穿越河道管理办法
- 【化工废水(酚醛树脂)水解酸化池的设计计算过程案例1400字】
- 内蒙古地质矿产勘查有限责任公司招聘笔试题库2025
- 中考地理真题专题复习 两极地区(解析版)
评论
0/150
提交评论