在Python中什么时候使用pass语句?如何高效地使用pass语句?

3

我不理解Python中pass语句的用法。

我找到了一些示例代码(点击链接),其中包含pass语句,但我无法弄清它在这种情况下的用途:

for letter in 'Python': 
    if letter == 'h':
        pass
        print 'This is pass block'
    print 'Current Letter :', letter

3
这段示例代码是从哪里来的?我认为你应该避免使用那个来源。 - Tim Pietzcker
2
另外,阅读文档:http://docs.python.org/2/tutorial/controlflow.html#pass-statements - Tim Pietzcker
@TimPietzcker 我在http://www.tutorialspoint.com/python/python_pass_statement.htm找到了这段代码。 - Satya
4
谢谢 - 这是一个非常好的例子,说明了教程不应该这样做。他们解释说,“在Python中,当需要语法上的语句但不想执行任何命令或代码时,使用pass语句”,然后他们继续给出一个例子,在那里pass语句在语法上并不需要,因为你确实希望执行代码... - Tim Pietzcker
1
我刚才看了教程中的另外几页。它们充斥着错误、不雅之处,经常不能表达重点(例如为什么要使用元组而不是列表等等) - 选择一个更好的教程(比如官方Python教程)。 - Tim Pietzcker
显示剩余3条评论
3个回答

7

Pass在Python中是一个空操作,对效率没有影响。它仅仅被用作语法占位符来标记一个空的代码块。

你可以使用dis模块来查看使用pass语句时生成的代码没有任何区别:

>>> from dis import dis
>>> def f(x):
    return x

>>> dis(f)
  2           0 LOAD_FAST                0 (x)
              3 RETURN_VALUE      

现在,再加上一个pass语句:
>>> def f(x):
    pass
    return x

>>> dis(f)
  3           0 LOAD_FAST                0 (x)
              3 RETURN_VALUE        

请注意,生成的代码与pass语句没有任何区别。
希望这有所帮助。祝好运 :-)

5
pass语句是一个空语句,它什么也不做。在你使用它的方式中,它完全没有任何区别。 pass主要用作占位符语句。假设你有一个函数,你计划以后再实现它。那么,你不能只留下空白,因为这是不正确的语法。所以,你使用pass
def spam():
    pass # i'll implement this later

一个类似的用法就是在空循环中。

for i in xrange(10):
    pass # just add some delay maybe?

1
当我们在循环区域中没有任何事情可做时,运行程序会出现错误。为了消除这个错误,我们可以使用pass语句。error
for i in range(5):  # when we execute this code we find error.


for i in range(5):  # no error
    pass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接