你能帮助我理解是否可以使用装饰器和没有装饰器的功能。
示例:
def makeitalic(fn):
def wrapped():
return "<i>" + fn() + "</i>"
return wrapped
@makeitalic
def hello():
return "hello, sir or madam!"
我想到的唯一方法是:
def hello():
return "hello, sir or madam!"
@makeitalic
def italic_hello():
return(hello())
嗯,是否可以在没有装饰器的情况下使用hello()?
答案 0 :(得分:0)
不一般。装饰函数替换原始函数,因此除非装饰器本身使其显式可用(例如,通过将其存储在某个全局注册表中或作为某个对象的属性),否则无法获取原始函数。 (您可以在装饰函数的闭包对象中将其作为单元格变量进行访问,但这不是非常强大,除了测试和实验之外,不应该依赖它。)