Как применить декораторы к лямбдам? - PullRequest
19 голосов
/ 08 ноября 2010

Есть ли синтаксис для использования декоратора для лямбда-функции в Python? Пример:

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!

Все же, когда я пытаюсь сделать то же самое с лямбдой:

@anotherdecorator
f = lambda x: x * 2

Я получаю это:

  File "<stdin", line 2
    f = lambda x: x * 2
    ^
 SyntaxError: invalid syntax

Я чувствую, что это может быть хорошим способом сделать лямбды более универсальными, позволяя им вводить в них утверждения. Но если такая функция существует, я не знаю, что такое синтаксис.

1 Ответ

36 голосов
/ 08 ноября 2010
f = anotherdecorator(lambda x: x * 2)
...