我正在使用几个在迭代器中调用的小型自定义def。在实例中,其中一个defs捕获了一个异常,我希望它退出该定义并保持脚本运行。主要流程如下:
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
有效,但仅用于评估条件。我希望休息时间跳到def2()
的末尾并继续def3()
并跳过<end stuff>
的所有剩余部分,这些部分将被我希望捕获的异常所打破。有更可信的方式吗?
答案 0 :(得分: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
这将突破循环并跳过最后的东西。
答案 1 :(得分:0)
除非我错过了一些东西,但是真的是无用的,因为它一进入它就会一直退出,因为其中一个if ... else ...会破坏或返回循环。
为什么不这样做:
def def2(DATE, TIME):
# stuff at the start
if not exists(fileloaderror):
print 'pass'
return
print 'found error'
# stuff at the end