文章插图
本节收录了稍作剪辑的PEP 8摘要(Python Enhancement Proposal,Python增强提案) 。PEP 8由Guido van Rossum和Barry Warsaw撰写,是Python的最接近编程风格手册的东西 。这里省略了一些比较具体的部分,但主要内容都已包括 。应该尽可能让代码遵守PEP 8规范,代码会由此更具Python风格 。访问Python官方网站的文档部分并搜索PEP,就可以获得PEP 8全文及Python历史上发布的所有其他PEP 。PEP既是Python历史和经验的绝佳来源,也是当前议题和将来计划的解释 。
访问Python官方网站的文档部分并搜索PEP,就可以获得PEP 8全文及Python历史上发布的所有其他PEP 。PEP既是Python历史和经验的绝佳来源,也是当前议题和将来计划的解释 。
01 简介本文档给出的Python编码约定,适用于由Python主发行版本中的标准库构成的代码 。有关Python的C实现中的C代码风格指南,参见相应的PEP 。本文档改编自Guido最初的Python风格指南文章,并加入了Barry风格指南的一些内容 。如果与Guido的风格规则存在冲突,应该遵从本PEP 。本PEP可能尚未完结(其实可能永远不会完结) 。
01
盲目的一致性是头脑简单的表现Guido的一个重要观点是,代码被阅读的次数远多于被编写的次数 。本指南旨在提高代码的可读性,使各种各样的Python代码能保持风格一致 。正如PEP 20所述,“Readability counts”(注重可读性) 。
风格指南是讨论一致性的 。与风格指南保持一致很重要 。维持同一个项目内部的一致性更加重要 。而保证同一个模块和函数内部的一致性则最重要 。
然而最最重要的是,知道何时应打破一致性,有时风格指南并不适用 。如果心存疑虑,请采用自己的最佳判断 。请看看别人的例子并做出最佳决定 。不要犹豫,尽管发出疑问 。
以下是两个打破规范的好理由 。
- 如果应用风格指南会让代码的可读性变差,甚至对于习惯阅读遵守本规范代码的人来说也是如此 。
- 需要与周边的代码保持一致,而这些代码并未遵守规范(可能是历史原因造成的),尽管这也可能是个收拾别人烂摊子的机会(真正的极限编程风格) 。
1.
缩进
每级缩进采用4个空格 。
为了对付那些确实陈旧的代码,又不愿做出清理,那么可以继续沿用8个空格长度的制表符 。
2.
制表符还是空格
绝对禁止制表符和空格的混用 。
最流行的Python缩进方式是只使用空格 。第二流行的方式是只使用制表符 。混合使用制表符和空格进行缩进的代码,应该转换为只使用空格的方式 。如果调用Python命令行解释器时带上
-t
参数,它就会对非法混用制表符和空格的代码发出警告 。如果用了-tt
参数,这些警告就会上升为错误 。强烈推荐使用这些参数!对全新的项目而言,强烈建议只用空格缩进,换掉所有的制表符 。大部分编辑器都具备将制表符替换为空格的便捷功能 。
3.
最大行长
所有行都应限制在79个字符以内 。
将行长限制在80个字符的设备还有很多,而且将窗口限制为80个字符宽就可以并排放置多个窗口 。这些设备上的默认换行会破坏代码的外观,增加理解的难度 。因此,请将所有行都限制在79个字符以内 。对于连续的大段文字(文档字符串或注释),建议将行长限制在72个字符以内 。
对长行进行换行的首选方案,是利用Python隐含的行连接特性,在圆括号、方括号和大括号内部进行断行 。必要时可以在表达式外面多加一对圆括号,不过有时候用反斜杠会更好看些 。请确保对后续行进行适当的缩进 。打断二元运算符的首选位置是在运算符之后,而不是运算符之前 。下面给出一些例子:
1 class Rectangle(Blob):
2 def __init__(self, width, height,
3 color='black', emphasis=None, highlight=0):
4 if (width == 0 and height == 0 and
5 color == 'red' and emphasis == 'strong' or
6 highlight > 100):
7 raise ValueError("sorry, you lose")
8 if width == 0 and height == 0 and (color == 'red' or
9 emphasis is None):
10 raise ValueError("I don't think so -- values are %s, %s" %
11 (width, height))
12 Blob.__init__(self, width, height,
13 color, emphasis, highlight)
4.
空行
推荐阅读
- Python新手知识点大纲
- Python文件和数据格式化!你学会了吗?
- 使用一行Python代码从图像读取文本
- 你真的了解Python吗?这篇文章可以让你了解90%
- Python中的列表、元组、集合和字典详解
- 小户型家庭装潢设计风格如何选择
- 小户型客厅装修风格有哪些
- 田园式房屋装修风格的设计要点
- Python打牢基础,从12个语法开始
- 5分钟带你深入了解Python爬虫,你会发现爬虫其实没有那么难