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

时间:2018-05-22 08:26:02

标签: python python-3.x

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中捕获

有没有人有想法?

由于

1 个答案:

答案 0 :(得分:1)

即使它不是最优雅的解决方案,您也可以决定在check函数中引发异常(built-incustom)并将其捕获到{ {1}}功能。请确保您只捕获您的例外。

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()