[Перевод] Декораторы Python от начала до конца

Добрый день! Это мой первый перевод на хабре. Я программирую ради удовольствия и эта статья (на самом деле это ответ с stackoverflow) показалась мне достойной внимания. Во-первых — она огромна. Во-вторых, она прекрасна. Она помогла лично мне и я надеюсь, что кому-нибудь (например, таким же новичкам как и я) она также окажет содействие и утолит любопытство. Все, что находится в таких »[…]» скобках — это мои комментарии. Все остальное — это мой перевод. Отчасти адаптированный, отчасти нет. Надеюсь, что он не очень плох и если всеже плох, рассчитываю на ваше понимание. Поехали! Python: Функции как объекты Что бы понять что такое декораторы, для начала вы должны понять, что функции в python — это объекты. Данное понимание очень важно. Давайте разберем это на простом примере: def shout (word=«yes»): return word.capitalize ()+»!»

print shout () # результат: 'Yes!'

# Так как фунция — объект, вы можете присвоить её переменной, как любой другой объект.

scream = shout

# Отметьте, что мы не используем скобки: мы не вызываем функцию, мы # помещаем функцию «shout» в переменную «scream». # это значит, что вы можете вызвать функцию «shout» из переменной «scream»:

print scream () # результат: 'Yes!'

# Более того, это значит, что вы можете удалить старое наименование 'shout', и # функция при этом будет все еще доступна из переменной 'scream'

del shout try: print shout () except NameError, e: print e #результат: «name 'shout' is not defined»

print scream () # результат: 'Yes!' Читать дальше →

© Habrahabr.ru