如何在 Python 中退出一些中间函数


def check():
if (cond):
how to return back to explore()
else:
return 1 # here return to f2
def cannot_be_modified():
try:
check() # inserted
print("hello from cannot_be_modified")
return 2
except Exception as e:
print(e)
def explore():
cannot_be_modified()
print("hello from explore")
return 0
explore()

调用堆栈为:explore() -> cannot_be_modified() --> check()

如果我在check满足一些条件,我想退出checkcannot_be_modified,然后再回到explore。 那么我该如何才能做到这一点呢?

我想过check函数中引发特定类型的异常并在explore中捕获它,但该异常可以在函数cannot_be_modified中捕获

有人有想法吗?

谢谢

即使它不是最优雅的解决方案,您也可以决定在check函数中引发异常(内置或自定义(,并在explorer函数中捕获该异常。确保您只捕获异常。

def check():
if True:
raise ValueError("MyError")
else:
return 1 # here return to f2
def cannot_be_modified():
check() # inserted
print("hello from cannot_be_modified")
return 2
def explore():
try:
cannot_be_modified()
except ValueError as e:
print(e)
print("hello from explore")
return 0
explore()

输出:

MyError
hello from explore

最新更新