为什么python在`pass`之后继续评估代码?

时间:2016-01-24 00:44:15

标签: python python-3.x

我在python中发现了一段有趣的代码:

def x(cond):
    if cond:
        pass
        print('Still running!')

x(True)

我希望这不会打印任何内容,但会打印Still running!。这里发生了什么?

3 个答案:

答案 0 :(得分:8)

根据Python文档:

  

pass是一个空操作 - 当它被执行时,没有任何反应。

来源 - https://docs.python.org/3.5/reference/simple_stmts.html#pass

因此,pass不执行任何操作,pass之后的所有语句仍将执行。

另一种思考方式是pass等同于任何虚拟陈述:

def x(cond):
    if cond:
        "dummy statement"
        print('Still running!')

答案 1 :(得分:4)

传递并不意味着“离开功能”,它只是意味着......没有。将其视为占位符,表示您不在那里做任何事情(例如,如果您还没有实现某些内容)。 https://docs.python.org/3.5/tutorial/controlflow.html#pass-statements

如果您要退出该功能,只需returnreturn None

顺便说一句其他有用的语句break退出最新的循环,continue退出循环的当前迭代并直接转到下一循环。

答案 2 :(得分:0)

通行证什么也没做。当程序到达那里时,它会说“好吧跳过这个!”。

Pass可以用于提前定义函数。例如,

def function_somebody_is_going_to_write_later():
    pass

def function_I_am_going_to_write_later():
    pass

这样你就可以编写一个文件,其中包含其他人可能会在以后工作的功能,你现在仍然可以执行该文件。