Взгляните на этот чудо-код с декоратором @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!'
Комментариев нет:
Отправить комментарий