-2

我正在使用在迭代器中调用的几个小的自定义定义。在实例中,其中一个 def 捕获了一个异常,我希望它退出该定义并保持脚本运行。主要流程如下:

for TIME in QueuedTimes:
    def1(DATE, TIME)
    def2(DATE, TIME)
    def3(DATE, TIME)

假设上游def1()一切正常,我想def2()的逻辑如下

def def2(DATE, TIME):
    <beginstuff>
    while True:
        if exists(fileloaderror):
            print 'found error'
            break
        else:
            print 'pass'
            break
     <end stuff>

while True有效,但仅用于评估条件。我希望 break 跳到末尾,def2()然后继续def3()并跳过所有其他<end stuff>会被我希望捕获的异常破坏的部分。有没有更值得信赖的方式来做到这一点?

4

2 回答 2

2

如果您需要提前退出函数,请使用return

def def2(DATE, TIME):
    # stuff at the start
    while True:
        if exists(fileloaderror):
            print 'found error'
            break
        else:
            print 'pass'
            return
     # stuff at the end

这将跳出循环在最后跳过内容。

于 2013-11-14T21:19:04.467 回答
0

除非我错过了什么,否则 while True 是无用的,因为它一旦输入就会退出,因为 if ... else ... 之一会中断或返回循环。

为什么不这样做:

def def2(DATE, TIME):
    # stuff at the start
    if not exists(fileloaderror):
        print 'pass'
        return
    print 'found error'
    # stuff at the end
于 2013-11-14T21:49:31.137 回答