python编程风格指南

上传人:第*** 文档编号:61701623 上传时间:2018-12-10 格式:DOCX 页数:11 大小:157.36KB
返回 下载 相关 举报
python编程风格指南_第1页
第1页 / 共11页
python编程风格指南_第2页
第2页 / 共11页
python编程风格指南_第3页
第3页 / 共11页
python编程风格指南_第4页
第4页 / 共11页
python编程风格指南_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《python编程风格指南》由会员分享,可在线阅读,更多相关《python编程风格指南(11页珍藏版)》请在金锄头文库上搜索。

1、目录Python编程风格规范1分号1行长度1括号1缩进2空行2空格2Python 解释器3注释4类5块注释和行注释6类6字符串7TODO 注释7导入格式8语句8访问控制9命名9Main10Python编程风格规范分号不要在行尾加分号, 也不要用分号将两条命令放在同一行.行长度 每行不超过80 个字符例外: 如果使用Python 2.4 或更早的版本, 导入模块的行可能多于80 个字符.Python 会将圆括号, 中括号和花括号中的行隐式的连接起来, 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号.Yes: foo_bar(self, width, height, co

2、lor=black, design=None, x=foo,emphasis=None, highlight=0)if (width = 0 and height = 0 andcolor = red and emphasis = strong):如果一个文本字符串在一行放不下, 可以使用圆括号来实现隐式行连接:x = (This will build a very long long long long long long long long string)注意上面例子中的元素缩进; 你可以在本文的 缩进 部分找到解释.括号宁缺毋滥的使用括号除非是用于实现行连接, 否则不要在返回语句或条件语

3、句中使用括号. 不过在元组两边使用括号是可以的.Yes: if foo:bar()while x:x = bar()if x and y:bar()if not x:4bar()return foofor (x, y) in dict.items(): .No: if (x):bar()if not(x):bar()return (foo)缩进用 4 个空格来缩进代码绝对不要用tab, 也不要tab 和空格混用. 对于行连接的情况, 你应该要么垂直对齐换行的元素(见 行长度 部分的示例), 或者使用4 空格的悬挂式缩进(这时第一行不应该有参数):Yes: # Aligned with open

4、ing delimiterfoo = long_function_name(var_one, var_two,var_three, var_four)# 4-space hanging indent; nothing on first linefoo = long_function_name(var_one, var_two, var_three,var_four)No: # Stuff on first line forbiddenfoo = long_function_name(var_one, var_two,var_three, var_four)# 2-space hanging i

5、ndent forbiddenfoo = long_function_name(var_one, var_two, var_three,var_four)空行顶级定义之间空两行, 方法定义之间空一行顶级定义之间空两行, 比如函数或者类定义. 方法定义, 类定义与第一个方法之间, 都应该空一行. 函数或方法中, 某些地方要是你觉得合适, 就空一行.空格按照标准的排版规范来使用标点两边的空格1. 括号内不要有空格.Yes: spam(ham1, eggs: 2, )No: spam( ham 1 , eggs: 2 , )2. 不要在逗号, 分号, 冒号前面加空格, 但应该在它们后面加(除了在行尾

6、).Yes: if x = 4:print x, yx, y = y, xNo: if x = 4 :print x , yx , y = y , x3. 参数列表, 索引或切片的左括号前不应加空格.Yes: spam(1)Yes: spam (1)Yes: dictkey = listindexNo: dict key = list index4. 在二元操作符两边都加上一个空格, 比如赋值(=), 比较(=, , !=, , =, in, notin, is, is not), 布尔(and, or, not). 至于算术操作符两边的空格该如何使用, 需要你自己好好判断. 不过两侧务必要保

7、持一致.Yes: x = 1No: x15. 当=用于指示关键字参数或默认参数值时, 不要在其两侧使用空格.Yes: def complex(real, imag=0.0): return magic(r=real, i=imag)No: def complex(real, imag = 0.0): return magic(r = real, i = imag)6. 不要用空格来垂直对齐多行间的标记, 因为这会成为维护的负担(适用于:, #, =等):Yes:foo = 1000 # commentlong_name = 2 # comment that should not be alig

8、neddictionary = 6foo: 1,long_name: 2,No:foo = 1000 # commentlong_name = 2 # comment that should not be aligneddictionary = foo : 1,long_name: 2,Python 解释器每个模块都应该以#!/usr/bin/env python开头模块应该以一个构造行开始, 以指定执行这个程序用到的Python 解释器:#!/usr/bin/env python2.4总是使用最特化的版本, 例如, 使用/usr/bin/python2.4, 而不是 /usr/bin/pyt

9、hon2. 这样,当升级到不同的Python 版本时, 能轻松找到依赖关系, 同时也避免了使用时的迷惑. 例如,/usr/bin/python2 是表示/usr/bin/python2.0.1 还是/usr/bin/python2.3.0?注释确保对模块, 函数, 方法和行内注释使用正确的风格文档字符串Python 有一种独一无二的的注释方式: 使用文档字符串. 文档字符串是包, 模块, 类或函数里的第一个语句. 这些字符串可以通过对象的_doc_成员被自动提取, 并且被pydoc 所用. (你可以在你的模块上运行pydoc 试一把, 看看它长什么样). 我们对文档字符串的惯例是使用三重双引号

10、. 一个文档字符串应该这样组织: 首先是一行以句号, 问号或惊叹号结尾的概述. 接着是一个空行. 接着是文档字符串剩下的部分, 它应该与文档字符串的第一行的第一个引号对齐. 下面有更多文档字符串的格式化规范.模块每个文件应该包含下列项, 依次是:1. 版权声明(例如, Copyright 2008 Google Inc.)2. 一个许可样板. 根据项目使用的许可(例如, Apache 2.0, BSD, LGPL, GPL), 选择合适的样板3. 作者声明, 标识文件的原作者.函数和方法如果不是既显然又简短, 任何函数或方法都需要一个文档字符串. 而且, 任何外部可访问的函数或方法, 不管多短

11、多简单, 都需要文档字符串. 文档字符串应该包含函数做什么, 以及输入和输出的详细描述. 通常, 不应该描述”怎么做”, 除非是一些复杂的算法. 对于技巧性的代码, 块注释或者行内注释是最重要的. 文档字符串应该提供足够的信息, 当别人编写代码调用该函数时, 他不需要看一行代码, 只要看文档字符串就可以了. 应该给参数单独写文档. 在冒号后跟上解释, 而且应该用统一的悬挂式2 或4空格缩进. 文档字符串应该在需要特定类型的地方指定期望的类型. “Raise:”部分应该列出该函数可能触发的所有异常. 生成器函数的文档字符串应该用”Yields:”而非”Returns:”.def fetch_bi

12、gtable_rows(big_table, keys, other_silly_variable=None):Fetches rows from a Bigtable.Retrieves rows pertaining to the given keys from the Table instancerepresented by big_table. Silly things may happen ifother_silly_variable is not None.Args:big_table: An open Bigtable Table instance.keys: A sequenc

13、e of strings representing the key of each table rowto fetch.other_silly_variable: Another optional variable, that has a muchlonger name than the other args, and which does nothing.Returns:A dict mapping keys to the corresponding table row datafetched. Each row is represented as a tuple of strings. F

14、orexample:Serak: (Rigel VII, Preparer),Zim: (Irk, Invader),Lrrr: (Omicron Persei 8, Emperor)If a key from the keys argument is missing from the dictionary,then that row was not found in the table.Raises:IOError: An error occurred accessing the bigtable.Table object.pass类类应该在其定义下有一个用于描述该类的文档字符串. 如果你的类有公共属性(Attributes), 那么文档中应该有一个属性(Attributes)段. 并且应该遵守和函数参数相同的格式.class SampleClass(object):Summary of class here.Longer class information.Longer class information.Attributes:likes_spam: A boolean indicating if we like SPAM or not.eggs: An integer count of

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号