从内部函数退出最外部函数的方法?

Jos*_*Kim 8 python python-3.x

假设我有如下代码:

def lab():
    letter = prompt() 
    def experiment_1():
        if letter == 1:
            print("check")
            #Would there be a way to quit the lab function right here?
    def experiment_2():
        if letter == 1:
            print("check2")

    experiment_1()
    experiment_2()
lab()
Run Code Online (Sandbox Code Playgroud)

打印“支票”后,我是否可以立即退出实验室功能?我尝试将 return 放在最后,experiment_1但这似乎直接转到下一个函数,即experiment_2.

war*_*iuc 6

最明显的方法是引发异常。它可以让你从任何深度出去。定义一个自定义异常并在某个外部级别捕获它。例如:

class MyError(Exception):
    pass

def _lab():
    letter = prompt() 

    def experiment_1():
        if letter == 1:
            print("check")
            raise MyError

    def experiment_2():
        if letter == 1:
            print("check2")

    experiment_1()
    experiment_2()

def lab():
    try:
        return _lab()
    except MyError:
        return

lab()
Run Code Online (Sandbox Code Playgroud)

这个特殊的例子有点难看,但你应该明白这个想法。