我正在学习python,我无法围绕书中的一段代码:
def find_value(List, value):
for i in range(len(List)):
if List[i] == value:
return i
return -1
Run Code Online (Sandbox Code Playgroud)
我已经尝试运行代码,如果值在其中则返回索引,如果不是则返回-1,但我不明白是因为'return -1'在for循环之外和if语句,每次执行代码时都不应该运行吗?或者只返回一次,第一次被调用?
我想在继续之前确保理解这个概念.提前致谢
不,你可以return在任意多个地方拥有尽可能多的陈述:
def function():
... # do something
return 1
return
return [3, 4, 5]
return next(__import__('os').walk('.'))[-1:-1000000000:-1]
Run Code Online (Sandbox Code Playgroud)
虽然重要的是要记住,只有return你的函数遇到的第一个才会计算,而其他任何可能成功的东西都不会被触及.
在上面的函数中,您将获得1结果,而不是其他任何东西.
这种"控制流"是你甚至可以做这样奇怪的事情的原因 -
def foo():
return True
whatIsThisIdontEven__somethingWeird.jpg # would ordinarily throw RuntimeErrors anywhere else
print(foo())
# True
Run Code Online (Sandbox Code Playgroud)
在您的情况下,它完全取决于您在运行时的代码流,但您仍然只会遇到一个return,因此只返回一次.
需要注意的是一个不同的是在的情况下,尝试-除了-终于,在return中final条款总是获胜.
def function():
try:
... # do something
return 1
except SomeException:
... # do something else
finally:
return 2
Run Code Online (Sandbox Code Playgroud)
在正常运行的情况下,你会遇到return 1的try,但由于语义的finally条款,你还是最终返回2.我相信这是唯一的例外.
现在yield,在另一方面,则是另一回事...