Порядок оформления декоратора
def make_bold(fn):
return lambda : "<b>" + fn() + "</b>"
def make_italic(fn):
return lambda : "<i>" + fn() + "</i>"
@make_bold
@make_italic
def hello():
return "hello world"
helloHTML = hello()
Выход:"<b><i>hello world</i></b>"
Я примерно понимаю, что такое декораторы и как они работают с одним из них в большинстве примеров.
В этом примере их 2. Из вывода кажется, что@make_italic
выполняется сначала, затем@make_bold
.
Означает ли это, что для декорированных функций он сначала будет запускать функцию, а затем двигаться к вершине для других декораторов? подобно@make_italic
будет первый@make_bold
, а не наоборот.
Значит, это означает, что он отличается от нормы нисходящего подхода в большинстве языков программирования? Просто для этого дела декоратор? Или я не прав?