为什么在 Python 中使用 pass 而不是像 0 这样更短的东西?

Why use pass instead of something shorter like 0 in Python?

为什么在 Python 中使用 pass 而不是像 0 这样更短的东西?

例如:

for i in range(10): pass

对比

for i in range(10): 0

使用 pass 的唯一两个好处是:

  1. 如果使用Python交互式解释器,它将输出0
  2. pass0
  3. 更容易理解

使用pass还有其他原因吗?

答案:可能只是为了便于阅读。

我翻阅了 old version of python's source code (version 0.9.1) 并在名为 doc/tut.tex:

的文件中找到了它
 \subsubsection{Pass Statements}

 The {\tt pass} statement does nothing.
 It can be used when a statement is required syntactically but the
 program requires no action.
 For example:
 \bcode\begin{verbatim}
 >>> while 1:
 ...       pass # Busy-wait for keyboard interrupt
 ...
 \end{verbatim}\ecode

然后在名为 src/graminit.c:

的文件中对它的引用(没有太多其他文档)
   {269, "pass_stmt", 0, 3, states_13,
    "[=11=]0[=11=]0[=11=]0[=11=]0[=11=]2[=11=]0[=11=]0[=11=]0[=11=]0[=11=]0[=11=]0[=11=]0"},

我想这只是将 pass 添加到 python 的相当基础的词汇表中。

这也是,在 src/compile.c:

   case pass_stmt:
           break;

和一个非常酷的文件 src/Grammar,它对它进行了一些引用,并在顶部有一个更改日志,它自己标记 "Grammar for Python, version 4" 但没有记录对 pass_stmt 的更改。

而且我找不到其他任何东西。所以似乎 pass 一直在 python 中,并且 python 项目开始的唯一文档说它 'does nothing.' 所以我认为我们可以得出结论它什么也不做,可读。

查看Zen of Python,可以看出一些原因;

  • 可读性很重要。
  • 显式优于隐式。
  • 面对歧义,拒绝猜测。

毫无疑问 pass 是什么。 而 0 可能表示整数或空操作,具体取决于上下文。这使得代码更难阅读和含糊不清。