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

时间:2016-01-07 22:17:05

标签: python python-2.x

如何以pythonic方式重写此代码?

   0  1  2
0  1  2  3

我可以使用内置功能吗?

4 个答案:

答案 0 :(得分:6)

更多的pythonic方式做N次是将xrange_变量一起使用:

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

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

答案 1 :(得分:1)

您可以使用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")

答案 2 :(得分:0)

tried = 0

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

这几乎就是你编写它的方式,除了你在while行的末尾需要一个冒号并将中断移动到“try”块。

答案 3 :(得分:-4)

动机

鉴于OP的动机是限制尝试运行 function() 的失败次数,以下代码不提供任何人工体操,但是限制尝试次数和保留事后分析的实际尝试次数(如果需要的话)

tried = 0

while tried < 3:
    try:
        function()           # may throw an Exception
        break                # on success pass through/return from  function()
    except Exception as e:
        print e
        tried += 1
# retains a value of tried for ex-post review(s) if needed