gpt4 book ai didi

python - 更简洁的方法最多执行 X 次,如果运行命令需要 X 次则引发异常

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:36 24 4
gpt4 key购买 nike

在 Python 中是否有更简洁的方法来执行此操作:

tries = 10
for x in range(tries):
try:
foo()
break
except Exception as e:
if x == tries-1:
raise e

重点是有时操作会失败(无论出于何种原因),但我们希望在引发异常之前允许重试多次。

最佳答案

使内容更简洁的常用方法是将其分解。

def retrying(max_attempts, func, *args, **kwargs):
attempts_left = max_attempts
while attempts_left: # could be 'while True', but an extra check won't hurt
try:
return func(*args, **kwargs)
except SomeException:
attempts_left -= 1
if not attempts_left:
raise

上面的代码只捕获SomeException 而不是Exception,否则当你的代码中有未定义的标识符时它会不断重试。通常捕获所有异常不是一个好主意,除非您立即重新引发它们。单独的 raise 保留了 func 的堆栈跟踪。您可以将要捕获的异常列表作为参数传递。

如果您有多个需要重试操作的地方,上面的代码最有意义。然后你只需编写 retrying(3, foo, 1, b=2) 而不是 foo(1, b=2)

关于python - 更简洁的方法最多执行 X 次,如果运行命令需要 X 次则引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21097053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com