【问题标题】:Why use pass instead of something shorter like 0 in Python?为什么在 Python 中使用 pass 而不是像 0 这样更短的东西?
【发布时间】:2015-08-29 22:12:38
【问题描述】:

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

例如:

for i in range(10): pass

对比

for i in range(10): 0

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

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

使用pass背后还有其他原因吗?

【问题讨论】:

  • 因为可读性比长度更重要。
  • @Delgan 当然,我正在寻找其他潜在原因,如问题中所述。
  • 我不知道,尽管您可以尝试timeit 确定。但是,无论如何,你看到了两个好处,没有坏处,所以我想这就足够了。

标签: python coding-style


【解决方案1】:

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

我翻遍了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,
    "\000\000\000\000\002\000\000\000\000\000\000\000"},

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

这也是,在 src/compile.c:

   case pass_stmt:
           break;

还有一个非常酷的名为 src/Grammar 的文件,它对它进行了一些引用,并在顶部有一个更改日志,将自己标记为“Python 语法,第 4 版”,但没有记录 pass_stmt 的任何更改。

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

【讨论】:

    【解决方案2】:

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

    • 可读性很重要。
    • 显式优于隐式。
    • 面对模棱两可,拒绝猜测的诱惑。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-05
      • 2017-09-19
      • 2020-10-24
      • 2018-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多