返回只能在一段代码中使用一次?

Yab*_*usa 2 python return

我正在学习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语句,每次执行代码时都不应该运行吗?或者只返回一次,第一次被调用?

我想在继续之前确保理解这个概念.提前致谢

cs9*_*s95 5

不,你可以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,因此只返回一次.

需要注意的是一个不同的是在的情况下,尝试-除了-终于,在returnfinal条款总是获胜.

def function():
    try:
        ... # do something
        return 1
    except SomeException:
        ... # do something else
    finally:
        return 2
Run Code Online (Sandbox Code Playgroud)

在正常运行的情况下,你会遇到return 1try,但由于语义的finally条款,你还是最终返回2.我相信这是唯一的例外.

现在yield,在另一方面,则是另一回事...