Python 3.x python在运行时支持decorator吗?
python的装饰器是一种甜食。我用它来宏一个函数定义,像这样Python 3.x python在运行时支持decorator吗?,python-3.x,decorator,Python 3.x,Decorator,python的装饰器是一种甜食。我用它来宏一个函数定义,像这样 @logger(level="debug") foo(var) 或 它们将foo函数转换为解析时间,类似于宏。但我正在寻求在运行时使用装饰的自由 foo(var) 或者(注意-在执行foo()时应用decorator,而不是定义foo()) Q1)python是否正式给予这种自由?我不喜欢使用变通方法,因为我将来会添加/使用更多的装饰器 问题2)如果不是,以下是实现自由的直接方法吗?如何处理*args和**kwargs temp
@logger(level="debug")
foo(var)
或
它们将foo函数转换为解析时间,类似于宏。但我正在寻求在运行时使用装饰的自由
foo(var)
或者(注意-在执行foo()时应用decorator,而不是定义foo())
Q1)python是否正式给予这种自由?我不喜欢使用变通方法,因为我将来会添加/使用更多的装饰器
问题2)如果不是,以下是实现自由的直接方法吗?如何处理*args和**kwargs
temp_foo = logger( level="debug", repeat(5, foo, *args) )
temp_foo(var)
问题3)python是否建议支持运行时装饰器?或者可能有一些想法
谢谢装饰器语法,不用了。但是您仍然可以手动调用它们。不过,最好只使用没有副作用的装饰器,即不修改传递给它的函数的装饰器
logger(level="debug")(repeat(5)(foo))(var)
修饰符在运行时用Python进行评估:可能不是用Java。我以前读过739654。我应该对运行时进行更具体的解释。我期望的运行时是执行函数foo(),而不是定义它。
temp_foo = logger( level="debug", repeat(5, foo, *args) )
temp_foo(var)
logger(level="debug")(repeat(5)(foo))(var)