你认为 Python 的缩进敏感语法有害吗?
如果您的回答是“否”,
然后使用pass 来标记结束只会使 cleanness 变得混乱
由 Python 的缩进敏感语法引入。
如果您的回答是“是”,
然后使用pass 标记结束是歧义的解决方法
由 Python 的缩进敏感语法引入。
在 Python 中,没有 {} 和 end,而是语义空白。
例如,考虑以下 Ruby 代码:
定义
对于我在 0...10
我 = 我 * 2
打印(一)
结尾
结尾
以及等效的 Python 代码:
定义 f():
对于范围内的 i (10):
我 = 我 * 2
打印(一)
一键错误 (TAB):
定义 f():
对于范围内的 i (10):
我 = 我 * 2
打印(一)
上面的代码也是有效的。
为避免此类错误,我们可以在 Python 中将pass 用于end:
定义 f():
对于范围内的 i (10):
我 = 我 * 2
打印(一)
经过
经过
一键错误 (TAB):
定义 f():
对于范围内的 i (10):
我 = 我 * 2
打印(一)
经过
经过
Python 将拒绝工作:
IndentationError:意外缩进
然而,即使使用pass,python 也不会总是捕捉到意外的缩进。
假设我们打算写:
定义 g():
对于范围内的 i (10):
我 = 我 * 2
经过
打印(一)
经过
一键错误 (TAB):
定义 g():
对于范围内的 i (10):
我 = 我 * 2
经过
打印(一)
经过
Python不会拒绝工作。
但是使用pass还是有两个好处:
对于第二个pass,
如果f() 是顶级函数,
并且您的代码遵守 PEP8:
用两个空行包围顶级函数和类定义。
您可以省略第二个pass。
但是PEP8也说:
可以使用额外的空行(谨慎)
将相关功能组分开。
所以我更喜欢pass。