`pass` keyword to mark end of indented code block
我最近注意到,有些人用
1 2 3 4 5 | def f(): for i in range(10): do_something(i) pass pass |
我不明白为什么。有什么好处吗?
我知道
你认为python对缩进敏感的语法有害吗?
如果您的回答是"否",然后用
如果您的回答是"是",然后使用
在python中,没有
例如,考虑以下Ruby代码:
1 2 3 4 5 6 | def f for i in 0...10 i = i * 2 print(i) end end |
以及等效的python代码:
1 2 3 4 | def f(): for i in range(10): i = i * 2 print(i) |
一次击错键(
1 2 3 4 | def f(): for i in range(10): i = i * 2 print(i) |
上述代码同样有效。
为了避免这种错误,我们可以在python中对
1 2 3 4 5 6 | def f(): for i in range(10): i = i * 2 print(i) pass pass |
一次击错键(
1 2 3 4 5 6 | def f(): for i in range(10): i = i * 2 print(i) pass pass |
Python将拒绝工作:
1 | IndentationError: unexpected indent |
但是,即使使用
假设我们打算写:
1 2 3 4 5 6 | def g(): for i in range(10): i = i * 2 pass print(i) pass |
一次击错键(
1 2 3 4 5 6 | def g(): for i in range(10): i = i * 2 pass print(i) pass |
Python不会拒绝工作。
但是使用
它仍然提供视觉提示。
如果您认为
pass 是缩进块的最后一个子句,在上面的代码中,print(i) 看起来很奇怪。如果键入
pass ,一个合适的编辑器/ide将正确缩进。
对于第二个
Surround top-level function and class definitions with two blank lines.
您可以省略第二个
但佩普8也表示:
Extra blank lines may be used (sparingly)
to separate groups of related functions.
因此我更喜欢
没有优势。如果函数有一个主体,那么添加
在实际代码中,使用docstring比使用
1 2 | class MyExtraException(Exception): """Just another exception""" |
Is there any advantages?
不。
把EDOCX1[0]放在非空代码块的末尾,这样只会浪费行。记住,
如果您想要一些何时使用