【发布时间】:2016-08-12 23:02:12
【问题描述】:
我正在尝试编写一个小型上下文管理器,它会尝试重复执行某些代码,直到代码正常工作或进行指定次数的尝试。我试图写这个,但在让上下文管理器处理问题时遇到了困难:
Exception RuntimeError: 'generator ignored GeneratorExit'
我应该如何编码?
import contextlib
import random
def main():
with nolube():
print(1 / random.randint(0, 1))
@contextlib.contextmanager
def nolube(
tries = None # None: try indefinitely
):
"""
Create a context for trying something repeatedly.
"""
tries_done = 0
rekt = True
if tries is None:
while rekt is True:
try:
yield
rekt = False
except:
tries_done += 1
pass
else:
while rekt is True and tries_done <= tries:
try:
yield
rekt = False
except:
tries_done += 1
pass
if __name__ == "__main__":
main()
【问题讨论】:
标签: python exception try-catch yield contextmanager