假设我有如下代码:
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.
最明显的方法是引发异常。它可以让你从任何深度出去。定义一个自定义异常并在某个外部级别捕获它。例如:
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)
这个特殊的例子有点难看,但你应该明白这个想法。