我对使用python实现逻辑有疑问。在printer()
中,当abort
的值在第10行中更改时,main()
是否有办法知道它并立即中断while
循环?
编辑:当且仅当出现问题时,abort
变为True
。
import time
abort = False
def printer():
global abort
print("I'm the printer")
time.sleep(5)
if somethingiswrong():
print("I'm aborting here")
abort = True
time.sleep(2)
print("I have aborted")
def main():
global abort
while not abort:
print("In while loop")
time.sleep(2)
printer()
if abort:
break
print("Printer killed me")
print("Quitting")
if __name__ == "__main__":
main()
我的意思是,日志输出现在是:
> In while loop
> I'm the printer
> I'm aborting here
> I have aborted
> Quitting
是否有更优化的方法来实现以下输出:
> In while loop
> I'm the printer
> I'm aborting here
> Quitting
我不是专家,也不熟悉任何python快捷方式,hacks,技巧等。任何帮助都会很棒.. !!
答案 0 :(得分:1)
要停止某个功能(printer
)在某个时刻运行,您可以在其中return
或raise
出现异常:
def printer():
global abort
print("I'm the printer")
time.sleep(5)
print("I'm aborting here")
abort = True
if abort:
return
...
答案 1 :(得分:1)
如果您想使用异常来控制流程,则可以:
import time
def printer():
global abort
print("I'm the printer")
time.sleep(5)
if somethingiswrong():
print("I'm aborting here")
raise RuntimeError("I'm aborting here")
time.sleep(2)
print("I have aborted")
def main():
while True:
print("In while loop")
time.sleep(2)
try:
printer()
except RuntimeError:
break
print("Printer killed me")
print("Quitting")
if __name__ == "__main__":
main()
根据需要输出