装饰器传参数

2020-03-03  本文已影响0人  mysimplebook

一般,我们编写一个装饰器的模式为

def outer(func):

    # 定义一个内嵌的包装函数

    def inner():

        func()

    # 将包装后的函数返回

    return inner

闭包的概念就是指运行时自带上下文的函数,它运行的时候自带了上层函数传给它的变量。

因此如果要给装饰器传参,需要再在装饰器外部封装一层函数,然后返回这个装饰器,这样装饰器函数可以使用传入的参数了

如https://mp.weixin.qq.com/s/buWtxY9Q9SGTcW48mgL36w中的一个例子

出错重试装饰器:

def retry(times=3,wait_time=10):

    def warp_func(func):

        def fild_retry(*args,**kwargs):

            for time in range(times):

                try:

                    func(*args,**kwargs)

                    return

                except:

                    time.sleep(wait_time)

        return fild_retry

    return warp_func

这个装饰器可以通过传入重试次数(times)和重试等待时间(wait_time)。

上一篇下一篇

猜你喜欢

热点阅读