(2) 遵循PEP 8风格指南

Python增强建议#8,也称为PEP 8,是关于如何格式化Python代码的样式指南。你可以使用任何你想要的方式编写Python代码,只要它有有效的语法。但是,使用一致的格式化代码更易于阅读。在更大的社区中,与其他Python程序员共享一种共同的风格可以促进协作项目。但是,即使您是惟一阅读您的代码的人,遵循样式指南也会使您以后更改代码变得更容易,并可以帮助您避免许多常见错误。

PEP 8提供了关于如何编写清晰的Python代码的大量细节。随着Python语言的发展,它将继续得到更新。值得在线阅读整个指南(https://www.python.org/dev/pep/pep-0008/)。这里有一些规则,你一定要遵守。

Whitespace(空格)

在Python中,空格在语法上很重要。Python程序员对空格对代码清晰度的影响特别敏感。遵循以下与空格相关的指导原则:

  • 使用空格而不是制表符进行缩进。
  • 为每一级的重要语法缩进使用四个空格。
  • 行长度不超过79个字符。
  • 将长表达式延续到其他行上时,应在其正常缩进级别上使用四个额外的空格进行缩进。
  • 在一个文件中,函数和类之间应该用两行空白隔开。
  • 在类中,方法之间应该用一行空白隔开
  • 在字典中,每个键和冒号之间不加空格,如果在同一行中,则在对应的值前加一个空格。
  • 在一个变量赋值中,在=操作符之前和之后都加上一个空格。
  • 对于类型注释,确保变量名和冒号之间没有分离,并在类型信息前使用空格。

Naming(命名)

PEP 8为语言中的不同部分提供了独特的命名风格。这些约定使得在读取代码时很容易区分与每个名称对应的类型。遵循以下有关命名的指导方针:

  • 函数、变量和属性应该采用小写的lowercase_underscore格式
  • 受保护的实例属性应该采用_leading_underscore格式
  • 私有实例属性应该采用双重下划线格式 __double_leading_underscore
  • 类(包括例外)应该是大写的。CapitalizedWord
  • 模块级常量应该采用ALL_CAPS格式 MYSQL_NAME
  • 类中的实例方法应该使用self(引用对象)作为第一个参数的名称。
  • 类方法应该使用引用类的cls作为第一个参数的名称。

Expressions and Statements(表达式和语句)

The Zen of Python states: “There should be one—and preferably only
one—obvious way to do it.”

PEP 8试图将这种风格编入它的表达式和语句指南:

  • 用内联否定(if a is not b)来代替肯定表达式的否定(if not a is b)
  • 不要通过将长度与0进行比较来检查空容器或序列(比如[]或")(if len(somelist) == 0)。使用if not somelist 并假设空值将隐式地计算为False
  • 对于非空容器或序列(如[1]或‘hi‘)也是如此。对于非空值,if somelist语句隐式地为True
  • 避免单行 if语句、for和while循环以及except复合语句。为了清晰起见,将它们分散在多个行上。
  • 如果你不能把一个表达式写在一行上,用圆括号和缩进把它包围起来,这样更容易阅读
  • 宁可使用圆括号括住多行表达式,也不要使用\ 行延续字符

Imports (导入)

PEP8 给出了如何导入模块和如何在代码中使用的一些指南:

  • 始终将import语句(from x import y)放在文件的顶部。
  • 在导入模块时,总是使用绝对名称,而不是相对于当前模块自己的路径的名称。例如,要从bar包中导入foo模块,应该使用from bar import foo,而不仅仅是import foo
  • 如果必须执行相对导入,请使用显式语法from . import foo
  • 导入部分应该按照以下顺序:标准库模块第三方模块您自己的模块。每个小节都应该有按字母顺序排列的导入。

NOTE:可以使用Pylint 进行静态的语法检查

值得注意的

  • 在编写Python代码时,请始终遵循Python增强建议#8 (PEP 8)样式指南
  • 与更大的Python社区共享相同风格的代码有助于与其他社区的协作
  • 使用一致的样式使您以后更容易修改自己的代码

相关推荐