武汉十大装修公司 > 关于python装饰器的问题 > 问答

关于python装饰器的问题?

假设有带参装饰器decorator(*args, **kwargs),使用该装饰器装饰函数func(*args2, **kwargs2):。@decorator(*args, **kwargs)

关于python装饰器的问题

问答分类 装饰 python 网友:我是一只喵 来源:装修问答网 2024-07-01

最新回答

  • 1、假设有带参装饰器decorator(*args,**kwargs),使用该装饰器装饰函数func(*args2,**kwargs2):
    @decorator(*args,**kwargs)
    deffunc(*args2,**kwargs2):
    ...
    实际上是以下写法的语法糖:
    deffunc(*args2,**kwargs2):
    ...
    func=decorator(*args,**kwargs)(func)
    如你所见,调用decorator(*args,**kwargs)返回的是一个callable对象(通常是一个函数,该函数用作内层装饰器),然后进一步调用此callable对象并传递函数func作为参数,得到一个被装饰过后的函数func',令变量func重新指向这个函数func'。因此,这种带参的装饰器通常有三层,外层装饰器返回内层装饰器,内层装饰器返回装饰后的函数。

相关问题

关于python装饰器的问题

  • 假设有带参装饰器decorator(*args,**kwargs),使用该装饰器装饰函数func(*args2,**kwargs2):
    @decorator(*args,**kwargs)
    deffunc(*args2,**kwargs2):
    ...
    实际上是以下写法的语法糖:
    deffunc(*args2,**kwargs2):
    ...
    func=decorator(*args,**kwargs)(func)
    如你所见,调用decorator(*args,**kwargs)返回的是一个callable对象(通常是一个函数,该函数用作内层装饰器),然后进一步调用此callable对象并传递函数func作为参数,得到一个被装饰过后的函数func',令变量func重新指向这个函数func'。因此,这种带参的装饰器通常有三层,外层装饰器返回内层装饰器,内层装饰器返回装饰后的函数。

网友推荐

 页面运行时间: 0.065289974212646 秒