在Python中,是否有用于lambda函数的装饰器语法?例如:
def simpledecorator(f):
def new_f():
print "Using a decorator: "
f()
return new_f
@simpledecorator
def hello():
print "Hello world!"
这个输出结果:
>>> hello()
Using a simple decorator:
Hello world!
但是当我尝试使用lambda时:
@anotherdecorator
f = lambda x: x * 2
我得到了这个:
File "<stdin", line 2
f = lambda x: x * 2
^
SyntaxError: invalid syntax
我觉得这可能是使Lambda更加多才多艺的好方法,因为它允许语句被"注入"进去。但如果存在这样的功能,我不知道语法是什么。
@decorator
语法试图解决的情况,即f = anotherdecorator(f)
。不过,这是一种非常有用的语言特性。 - Rafe Kettler@
语法出现之前,像这样装饰一个函数(或类)的主要方法是这样的。 - martineau