如何限制调用函数失败的次数?

2024-04-19 19:45:59 发布

您现在位置:Python中文网/ 问答频道 /正文

如何用pythonic的方式重写这个代码?你知道吗

tried = 0

while tried < 3:
    try:
        function()
        break
    except Exception as e:
        print e
        tried += 1    

有我可以使用的内置函数吗?你知道吗


Tags: 函数代码as方式exceptionfunctionpythonic内置
3条回答

做N次某件事的一种更为python的方法是使用xrange_变量:

for _ in xrange(3):
    try:
        function()
        break
    except Exception as e:
        print e

另外,考虑捕获更具体的异常,而不是根Exception类。你知道吗

tried = 0

while tried < 3:
    try:
        function()   
        break
    except Exception as e:
        print e
        tried += 1

它几乎和你写的一样,只是你需要在while行的末尾加一个冒号,然后把分隔符移到“try”块。你知道吗

您可以使用retry decorator

@retries(3)
def execTask():
    f()

一个比所提供链接中的更简单的方法如下所示:

def retry(times=3):
    def do_retry(f, *args, **kwargs):
        cnt = 0
        while cnt < times:
            try:
                f(*args, **kwargs)
                return
            except:
                cnt += 1
    return do_retry

可以这样使用:

@retry(3)
def test():
    print("Calling function")
    raise Exception("Some exception")

相关问题 更多 >