Взгляните на этот чудо-код с декоратором @amazed:
def amazed(func):
def wrap():
return func() + 'aaa!'
return wrap
@amazed
def hey():
return 'hey'
print hey() # 'heyaaa!'
Эта запись позволяет заменить следующий код:
def amazed(func):
# определяем функцию-обертку
def wrap():
# выполняем переданную функцию - func().
# К результату подсоединяем строку 'aaa!'
return func() + 'aaa!'
# возвращаем объект функции wrap
return wrap
def hey():
return 'hey'
hey = amazed(hey)
print hey()
Таким образом, декоратор
@amazed позволил нам, не тронув кода функции
hey(), изменить ее поведение и сделать так, чтобы к слову
'hey' добавлялась строка
'aaa!'
Комментариев нет:
Отправить комментарий