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()
Çıktı: "<b><i>hello world</i></b>"
Çoğu örnekte dekoratörleri ve bunlardan biriyle nasıl çalıştığını kabaca anlıyorum.
Bu örnekte 2 tane var. Çıktıdan, o @make_italic
zaman önce çalıştırılıyor gibi görünüyor @make_bold
.
Bu, dekore edilmiş işlevler için önce işlevi çalıştıracağı, ardından diğer dekoratörler için yukarı doğru hareket edeceği anlamına mı geliyor? Gibi @make_italic
ilk önce @make_bold
yerine tam tersi.
Yani bu, çoğu programlama dilinde yukarıdan aşağıya yaklaşım normundan farklı olduğu anlamına mı geliyor? Sırf bu dekoratör davası için mi? Yoksa yanılıyor muyum?