15
Есть ли какой-либо синтаксис для использования декоратора на лямбда-функции в Python? Пример:Использование декораторов на лямбдах в 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
I чувствую, что это может быть хорошим способом сделать лямбда более универсальным, позволяя операторам «вводить» в них. Но если существует такая функция, я не знаю, что такое синтаксис.
Точно. И это очевидно, если вы знаете, как работают декораторы. Если вы этого не сделаете, вы, возможно, не должны писать их. – delnan
Хотел бы я подумать об этом раньше. Это позволяет избежать ситуации, когда синтаксис '@ decorator' пытается бороться, т. Е.' F = anotherdecorator (f) '. Тем не менее, это очень полезная функция языка. –
Перед синтаксисом '@' что-то вроде этого было основным способом украшения функции (или класса). – martineau