美文网首页
装饰器传参数

装饰器传参数

作者: 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)。

相关文章

  • 装饰器

    闭包 nonlocal这个就是修改外部参数的值 装饰器 装饰器有结论 两个装饰器装饰一个函数 装饰器传参

  • python中怎样使用装饰器

    闭包 nonlocal这个就是修改外部参数的值 装饰器 装饰器有结论 两个装饰器装饰一个函数 装饰器传参

  • 装饰器传参数

    一般,我们编写一个装饰器的模式为 def outer(func): # 定义一个内嵌的包装函数 def i...

  • pytest的fixture传参数

    fixture传多个参数 多个fixtur只加一个装饰器 多个fixtur叠加装饰器

  • Python装饰器探究——装饰器参数

    探究装饰器参数 编写传参的装饰器

    装饰器

    一、函数传参 二、如果每个函数都需要同一个功能 三、装饰器实现 四、被装饰函数有参数情况 五、带参数的装饰器 六、...

  • Python装饰器之多重装饰器

    多重装饰器 ​众所周知,使用装饰器装饰一个函数时,装饰器会将原函数当做一个参数,传进装饰器函数中,然后返回一个新的...

  • Python中的装饰器

    Python中的装饰器 不带参数的装饰器 带参数的装饰器 类装饰器 functools.wraps 使用装饰器极大...

  • TypeScript——装饰器(四)

    参数装饰器 参数装饰器声明在一个参数声明之前(紧靠着参数声明)。 参数装饰器应用于类构造函数或方法声明。 参数装饰...

  • 透析Python装饰器--透过现象看本质

    》眼花缭乱 Python的装饰器(也称语法糖)大致分为这几类: 无参数装饰器 有参数装饰器 装饰类的装饰器 无参数...

网友评论

      本文标题:装饰器传参数

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