在Python中,您可以编写一个装饰器来返回非功能对象,例如字符串或字典吗?例如,考虑以下代码:
def decorator(function):
return str(function)
@decorator
def foo(bar):
return bar + 1
该代码有效,但是在社区中是否被接受?
引用PEP 0318:
在Python 2.4a2中实现的函数装饰器的当前语法为:
@dec2
@dec1
def func(arg1, arg2, ...):
pass
这等效于:
def func(arg1, arg2, ...):
pass
func = dec2(dec1(func))
没有对变量func进行中间分配。
因此,要回答您的问题,您可以让装饰器返回不是函数的东西,并且行为已完全定义。否则,它将不等同于上面的代码。
但是,这样做还非常不清楚。人们期望函数修饰符返回函数(或至少是可调用对象),而类修饰符则返回类。如果您偏离该模式,则后果自负-如果您的邻居决定出于愤怒和沮丧而击倒小隔间,那就是您的问题:)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句