美文网首页
装饰器传参数

装饰器传参数

作者: mysimplebook | 来源:发表于2020-03-03 15:01 被阅读0次

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

    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)。

    相关文章

      网友评论

          本文标题:装饰器传参数

          本文链接:https://www.haomeiwen.com/subject/xothlhtx.html