我发现蟒蛇一个有趣的一段代码:为什么python会在`pass`后继续评估代码?
def x(cond):
if cond:
pass
print('Still running!')
x(True)
我希望这不打印任何东西,但它打印Still running!
。这里发生了什么?
我发现蟒蛇一个有趣的一段代码:为什么python会在`pass`后继续评估代码?
def x(cond):
if cond:
pass
print('Still running!')
x(True)
我希望这不打印任何东西,但它打印Still running!
。这里发生了什么?
按照Python文档:
pass
是一个空操作 - 在执行时,没有任何反应。
来源 - pass
仍然会执行后https://docs.python.org/3.5/reference/simple_stmts.html#pass
因此,pass
没有做任何事情,所有的语句。
思考这个的另一种方式是,pass
等同于任何虚拟声明:
def x(cond):
if cond:
"dummy statement"
print('Still running!')
有趣的是,我认为'pass'是一个关键字占位符。 –
我可以看到这个名字有点混乱,但是那个文档有帮助! – miki725
是的,但是因为我认为'pass'是一个关键词,所以我没有在文档中查找;) –
通并不意味着“退出功能”,它只是意味着什么都没有。把它想象成一个占位符,说你在那里不做任何事情(例如,如果你还没有实现)。 https://docs.python.org/3.5/tutorial/controlflow.html#pass-statements
如果你想退出该功能,您只需return
或return None
顺便说其他有用的陈述break
退出最新环和continue
退出循环的当前迭代,并直接进入下一个。
是的,我知道所有这些,我只是看到了这个代码,并不知道它做了什么(我很少使用python)。 –
通常你有两个使用pass的理由:你想在将来实现一些东西,所以你创建了一个函数并且将它留空,或者需要这个函数,因为可能发生在你刚刚创建的对象上的操作,因为你没有用处。 – Mijamo
通过什么都不做。当程序到达时,它说“好吧,跳过这个!”。
Pass可用于提前定义函数。例如,
def function_somebody_is_going_to_write_later():
pass
def function_I_am_going_to_write_later():
pass
这样,你可以写其他人以后可能工作在函数的文件,你仍然可以执行该文件现在。
http://stackoverflow.com/questions/13886168/how-to-use-the-pass-statement-in-python –
@Downvoters为什么?我知道'pass'函数是如何工作的(占位符说'我需要一个实现!'),我只是不知道这是如何工作的。 –