现在的位置: 主页 > 商讯 > 文章列表

Python开发编码规范

作者:北京夜明珠节能科技有限公司 来源:www.ymzjn.com 发布时间:2017-09-02 11:47:00
Python开发编码规范

1.2. 一致性的建议

在这篇风格指导中的一致性是重要的. 在一个项目内的一致性更重要. 在一个模块或函数内的一致
性最重要。
但最重要的是:知道何时会不一致-- 有时只是没有实施风格指导.当出现疑惑时。

运用你的最佳判断.看看别的例子,然后决定怎样看起来更好.并且要不耻下问!
打破一条既定规则的两个好理由:
1 当应用这个规则是将导致代码可读性下降,即便对某人来说,他已经习惯于按这条规则来阅读代码了.

2为了和周围的代码保持一致而打破规则(也许是历史原因)

虽然这也是个清除其它混乱的好机会(真正的XP风格).

1.3. 代码的布局

(Blank Lines)
用两行空行分割顶层函数和类的定义,类内方法的定义用单个空行分割.

额外的空行可被用于(保守的(sparingly))分割相关函数组成的群(groups of related functions). 在一组相关的单句中间可以省略空行.(例如.一组哑元(a set of dummy implementations)).
当空行用于分割方法(method)的定义时,在'class'行和第一个方法定义之间也要有一个空行.
在函数中使用空行时,请谨慎的用于表示一个逻辑段落(indicate logical sections).
Python接受contol-L(即^L)换页符作为空格;Emacs(和一些打印工具) 视这个字符为页面分割符,因此在你的文件中,可以用他们来为相
关片段(sections)分页.

Python核心发布中的代码必须始终使用ASCII或Latin-1编码(又名ISO-8859-1). 使用ASCII的文件不必有译码cookie(coding cookie).
Latin-1仅当注释或文档字符串涉及作者名字需要Latin-1时才被使用; 另外使用\x转义字符是在字符串中包含非ASCII(non-ASCII)数据的首选方法.

--不论什么情况使用UTF-8 吧!这是王道!

1.4. 导入

通常应该在单独的行中导入(Imports),例如:

bad: import sys, os good: import sys import os
但是这样也是可以的:
from types import StringType, ListType

Imports 通常被放置在文件的顶部,仅在模块注释和文档字符串之后,在模块的全局变量和常量之前.Imports应该有顺序地成组安放.

1 标准库的导入(Imports ) 2 相关的主包(major package)的导入(即,所有的email包在随后导入) 3 特定应用的导入(imports)
你应该在每组导入之间放置一个空行.

对于内部包的导入是不推荐使用相对导入的.对所有导入都要使用包的绝对路径.
从一个包含类的模块中导入类时,通常可以写成这样:

from MyClass import MyClass from foo.bar.YourClass import YourClass 如果这样写导致了本地名字冲突,那么就这样写 import MyClass import foo.bar.YourClass

1.9.2.2. 模块名

(Module Names)
模块应该是不含下划线的,简短的,小写的名字.
因为模块名被映射到文件名, 有些文件系统大小写不敏感并且截短长名字, 模块名被选为相当短是重要的---这在Unix上不是问题, 但当代码传到Mac 或Windows上就可能是个问题了.
当一个用C或C++写的扩展模块有一个伴随的Python模块,这个Python模块提供了一个更高层(例如,更面向对象)的接口时,C/C++模块有一个前导下划线(如:_socket)
Python包应该是不含下划线的,简短的,全小写的名字.

1.9.2.3. 类名

(Class Names)
几乎没有例外,类名总是使用首字母大写单词串(CapWords)的约定.

1.9.2.4. 异常名

(Exception Names)
如果模块对所有情况定义了单个异常,它通常被叫做"error"或"Error". 似乎内建(扩展)的模块使用"error"(例如:os.error), 而Python模块通常用"Error" (例如: xdrlib.Error). 趋势似乎是倾向使用CapWords异常名.

1.9.2.5. 全局变量名
(Global Variable Names)
(让我们希望这些变量打算只被用于模块内部) 这些约定与那些用于函数的约定差不多.被设计可以通过"from M import *"来使用的那些模块,应该在那些不想被导入的全局变量(还有内部函数和类)前加一个下划线).

1.9.2.6. 函数名
(Function Names)
函数名应该为小写,可能用下划线风格单词以增加可读性. mixedCase仅被允许用于这种风格已经占优势的上下文(如: threading.py) 以便保持向后兼容.

1.9.2.7. 方法名和实例变量
(Method Names and Instance Variables)
这段大体上和函数相同:通常使用小写单词,必要时用下划线分隔增加可读性.
使用一个前导下划线仅用于不打算作为类的公共接口的内部方法和实例变量. Python不强制要求这样; 它取决于程序员是否遵守这个约定.
使用两个前导下划线以表示类私有的名字. Python将这些名字和类名连接在一起: 如果类Foo有一个属性名为 __a, 它不能以Foo.__a访问.

(执著的用户(An insistent user)还是可以通过Foo._Foo__a得到访问权.) 通常,双前导下划线应该只用来避免与类(为可以子类化所设计)中的属性发生名字冲突.

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:仙桃网站建设 http://xiantao.45qun.com

上一篇:域名被盗如何找回? 下一篇:最后一页