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
вместо противоположного.
Значит, это означает, что он отличается от нормы подхода сверху вниз в большинстве программных языков? Только для этого случая декоратора? Или я ошибаюсь?