1.
def say_hello(): print('Hello') def do_thmth(function): def wrap(): print('Сказал:') function() print('Улыбнулся') return wrap do_thmth(say_hello)
2.
def operator(op): def sum (first = 5, second = 5): return sum def minus (first = 5, second = 2): return minus if (op == '+'): return sum else: return minus
Последовательность:
1. Вызываем функцию, передав какой-либо аргумент (другую функцию, символ, число - не важно).
2. Получили адрес функции, в которую нужно передать конкретные параметры (в примере 2 - числа для мат. операции).
Правильно ли я понял, что если шаг 2 не нужен (не нужно передавать аргументы), то декорировать не нужно? Т.е. декорирование в примере 1 излишне? В примере 2 еще понимаю смысл декораторов - чтобы внутрь логику спрятать.