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