Python - 返回break语句

时间:2017-02-17 06:54:17

标签: python loops

如果你调用一个函数检查退出条件,你可以让它返回一个break语句吗?类似的东西:

def check():
    return break

def myLoop:
    while myLoop:
        check()

是否允许这样的事情?我知道写的语法无效。

2 个答案:

答案 0 :(得分:2)

不,不幸的是,它并没有像那样工作。您必须检查返回值,然后决定在调用者中退出循环。

while myLoop:
   result = check()
   if result == 'oh no':
       break

当然,取决于你想要做什么,它可能只是简单:

result = check()
while result != 'oh no':
     result = check()

答案 1 :(得分:1)

break是关键字,但不是对象,因此解释器link会对其进行不同的处理。 Python函数只能返回对象等。

如果你想在深入内部函数时突破循环,一种方法是使用异常:

class BreakException(Exception):
    pass

在函数中的某处提升异常:

def some_func():
    raise BreakException()

你可以打破这样的循环:

try:
    while True:
        some_func()
except BreakException:
    pass

我觉得这不是好习惯,但是看过一些使用它的语言,例如Scala link