PEP 8: Python中的编码风格指南
事实上,编码和应用逻辑是任何编程语言的基础,但还有一个因素是每个编码人员在编码时必须牢记的,那就是编码风格。牢记这一点, Python保持了严格的脚本顺序和格式。遵循这一点有时是强制性的,并且对用户的理解有很大帮助。让其他人更容易阅读代码总是一个好主意,采用一种好的编码风格对此有很大帮助。
对于Python来说, PEP 8已经成为大多数项目所遵循的风格指南;它促进了一种非常易读和赏心悦目的编码风格。每个Python开发人员都应该在某个时候阅读它;以下是为您提取的最重要的几点:
1. 使用 4 空格缩进,没有制表符。
例子:
# Aligned with opening delimiter.
grow = function_name(variable_one, variable_two,
variable_three, variable_four)
# First line contains no argument. Second line onwards
# more indentation included to distinguish this from
# the rest.
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. 使用定期和更新的评论对编码人员和用户都很有价值:从程序和用户的角度来看,如果遵循这些类型和条件,也会有很大的帮助。评论应该形成完整的句子。如果评论是一个完整的句子,它的第一个单词应该大写,除非它是一个以小写字母开头的标识符。在简短的评论中,末尾的句点可以省略。在块注释中,有多个段落,并且每个句子必须以句点结尾。块注释和内联注释可以写后跟一个“#”。
内联注释示例:
geek = geek + 1 # Increment
5.尾随逗号的使用:这不是强制性的,除非在制作元组时。
例子:
tup = ("geek",)
5.使用 Python 的默认UTF-8或ASCII编码,而不是任何花哨的编码,如果它适用于国际环境。
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'(大写字母 eye)作为单字符变量名称,因为这些类似于数字一和零。
9. 如果说不同语言的人阅读或维护代码的可能性很小,就不要在标识符中使用非 ASCII字符。
10. 统一命名你的类和函数:惯例是使用CamelCase命名类,使用lower_case_with_underscores命名函数和方法。始终使用self作为第一个方法参数的名称。
11. 虽然方法函数的命名总是使用self作为实例方法的第一个参数,而使用cls作为类方法的第一个参数。如果函数参数名称与保留字匹配,则可以用逗号结尾。例如,class_
你可以参考这个简单的程序来了解如何编写一个可以理解的代码:
# Python program to find the
# factorial of a number provided by the user.
# change the value for a different result
num = 7
# uncomment to take input from the user
#num = int(input("Enter a number: "))
factorial = 1
# check if the number is negative, positive or zero
if num < 0:
print("Sorry, factorial does not exist for negative numbers")
elif num == 0:
print("The factorial of 0 is 1")
else:
for i in range(1,num + 1):
factorial = factorial*i
print("The factorial of",num,"is",factorial)
输出:
The factorial of 7 is 5040