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
, а не навпаки.
Отже, це означає, що він відрізняється від норми підходу зверху вниз у більшості мов програмування? Тільки для цього випадку декоратора? Або я помиляюся?