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()
Keluaran: "<b><i>hello world</i></b>"
Saya kira-kira mengerti tentang dekorator dan cara kerjanya dengan salah satunya di sebagian besar contoh.
Dalam contoh ini, ada 2 di antaranya. Dari output, sepertinya yang @make_italic
dieksekusi dulu, baru @make_bold
.
Apakah ini berarti bahwa untuk fungsi dekorasi, ini akan menjalankan fungsi terlebih dahulu kemudian bergerak ke atas untuk dekorator lain? Seperti @make_italic
dulu @make_bold
, lalu sebaliknya.
Jadi ini berarti bahwa ini berbeda dari norma pendekatan top-down di kebanyakan bahasa pemrograman? Hanya untuk kasus dekorator ini? Atau apakah saya salah?