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>"
Dekoratör yürütme sırası
Kabaca dekoratörler hakkında anlamamız ve en örneklerde bunun biriyle nasıl çalıştığını.
Bu örnekte, bunlardan 2 tane var. Çıktıdan, @make_italic
ilk önce, daha sonra @make_bold
yürütülür gibi görünüyor.
Bu, süslü işlevler için önce işlevi ilk önce çalıştıracak ve sonra diğer dekoratörler için yukarı doğru hareket edeceği anlamına mı geliyor? @make_italic
gibi ilk önce @make_bold
, tersi yerine.
Bu, çoğu programlama langında yukarıdan aşağıya yaklaşımın normundan farklı olduğu anlamına mı geliyor? Sadece bu dekoratör davası için mi? Yoksa yanılıyor muyum?
evet anlıyorum sonraki –