📜  PEP 8:Python中的编码样式指南

📅  最后修改于: 2020-05-11 13:50:24             🧑  作者: Mango

确实,编码和应用逻辑是任何编程语言的基础,但是还有另一个因素是每个编码人员在编码时都必须牢记,这就是编码风格。 记住这一点,Python维护了严格的脚本编写顺序和格式,遵循此有时是强制性的要求,对用户的理解很有帮助。 使他人易于阅读代码始终是一个好主意,采用良好的编码风格对此有很大帮助。

对于Python, PEP 8已成为大多数项目所遵循的样式指南。 它促进了一种非常易读且令人赏心悦目的编码风格。 每个Python开发人员都应该在某个时候阅读它。 以下是为您提取的最重要的要点:

1.使用4空格缩进,不使用制表符。
例子:

# 与开口定界符对齐.
grow = function_name(variable_one, variable_two,
                     variable_three, variable_four)
# 第一行不包含任何参数。从第二行开始,更多的缩进包括区别于其他。
def function_name(
        variable_one, variable_two, variable_three,
        variable_four):
    print(variable_one)

4空格规则并非始终是强制性的。

2.使用文档字符串: Python中可以使用单行和多行文档字符串。 但是,单行注释适合一行,两种情况都使用三引号。 这些用于定义特定程序或特定功能。
例:

def exam():
    """This is single line docstring"""
    """This is
    a
    multiline comment"""

 

3.换行,使它们不超过79个字符: Python标准库是保守的,需要将行数限制为79个字符。 可以使用括号,方括号和大括号将这些行换行。 应优先使用反斜杠。
例:

with open('/path/from/where/you/want/to/read/file') as file_one, \
     open('/path/where/you/want/the/file/to/be/written', 'w') as file_two:
    file_two.write(file_one.read())

4.使用常规和更新的注释对编码人员和用户都非常有价值 :如果遵循这些类型和条件,则从程序和用户的角度来看,它们也可以提供很大的帮助。 评论应构成完整的句子。 如果注释是完整句子,则除非注释是以小写字母开头的标识符,否则应将其首字母大写。 简而言之,可以省略最后的句点。 整段注释中有多个段落,每个句子必须以句点结尾。 可以在块注释和行内注释后加上单个“#”。
内联评论示例:

mango = mango + 1                 # 累加

5.尾随逗号的使用:这不是强制性的,除非在创建元组时。
例:

tup = ("芒果",)

5.如果要用于国际环境, 请使用Python的默认UTF-8ASCII编码,而不要使用任何特殊的编码 。

6.在运算符周围和逗号后使用空格,但不要在括号结构内直接使用:

a = f(1, 2) + g(3, 4)

7.命名约定:应当遵循一些命名约定,以使程序更简单,更易读。 同时,Python中的命名约定有些混乱,但是这里有一些易于遵循的约定。
遵循一个首要原则,即作为API公共部分对用户可见的名称应遵循反映用法而不是实现的约定。
以下是一些其他命名约定:

b (single lowercase letter)
B (single upper case letter)
lowercase
lower_case_with_underscores
UPPERCASE
UPPER_CASE_WITH_UNDERSCORES
CapitalizedWords (or CamelCase). This is also sometimes known as StudlyCaps.
Note: While using abbreviations in CapWords, capitalize all the letters
of the abbreviation. Thus HTTPServerError is better than HttpServerError.
mixedCase (differs from CapitalizedWords by initial lowercase character!)
Capitalized_Words_With_Underscores

除了这几个外,还考虑了下划线。
例子:
single_leading_underscore: “内部使用”指标较弱。 例如,from M import *不会导入名称以下划线开头的对象。
single_trailing_underscore_:用于避免与Python关键字冲突。
例:

Tkinter.Toplevel(master, class_='ClassName')

__double_leading_underscore:命名类属性时,调用名称修饰。
(在FooBar类中,__boo变为_FooBar__boo;)。
__double_leading_and_trailing_underscore__:存在于用户控制的名称空间中的“魔术”对象或属性。 例如__init__,__import__或__file__ 。 仅按记录使用它们。

8.不应用作标识符的字符: “ l”(小写字母el),“ O”(大写字母oh)或“ I”(大写字母眼睛)作为单个字符变量名称,因为它们与数字一和零相似。

9.如果说不同语言的人阅读或维护代码的可能性很小,则不要在标识符中使用非ASCII字符 。

10.一致地命名类和函数:约定是将CamelCase用于类,将lower_case_with_underscores用于函数和方法。 始终使用self作为第一个方法参数的名称。

11.虽然方法的功能命名总是将self用作实例方法的第一个参数,cls用作类方法的第一个参数。如果函数的参数名称与保留字匹配,则可以用逗号结尾。 例如,class_
您可以参考以下简单程序,以了解如何编写可理解的代码:

# Python程序查找用户提供的数字的阶乘.
 # 更改值以得到不同的结果
  num = 7
 # 取消注释以接受用户输入
 #num = int(input("Enter a number: "))
  factorial = 1
 # 检查数字是负数,正数还是零
  if num < 0 :
     print ( "Sorry, factorial does not exist for negative numbers" )
  elif num = = 0 :
     print ( "The factorial of 0 is 1" )
  else :
     for range in ( 1 ,num + 1 ): i ):
         factorial = factorial * i
     print ( "The factorial of" ,num, "is" ,factorial)

输出:

The factorial of 7 is 5040