Python:有没有一种快速方法可以打破所有功能?返回主循环?

时间:2016-12-21 21:29:20

标签: python

快速举例:

def func_1():
    func_2()

def func_2():
    func_3()

def func_3():
    #Finds condition to end all calculations and break of out all functions

func_1()

我有一些代码,其中的函数运行其他函数运行其他函数,这些函数一起耗费大量时间进行音频计算。我有一个“停止测试”tkinter按钮,我想停止所有测试,但为了实现这一点,所有功能都被打破了。有快速的方法吗?要检查停止条件,需要加载IF语句,因为在计算过程中可以随时设置停止条件。

2 个答案:

答案 0 :(得分:1)

您可以使用Python的内置异常机制来执行此操作。如果你打算走这条路,我推荐一个定制的,有名的例外。

class JumpToMainLoop(Exception):
    pass

def func_1():
    func_2()

def func_2():
    func_3()

def func_3():
    raise JumpToMainLoop

try:
    func_1()
except JumpToMainLoop:
    pass

使用内置异常(如ValueError)或更糟糕的一般异常(如Exception)是不可取的,因为其他可能出错的内容会被{{1 }}

答案 1 :(得分:0)

您可以使用例外

def func_1():
    func_2()

def func_2():
    func_3()

def func_3():
    if condition:
        raise Exception('something happened')

try:
    func_1()
except Exception:
    pass