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()
Output: "<b><i>hello world</i></b>"
Decorator thực hiện lệnh
tôi khoảng hiểu về trang trí và làm thế nào nó hoạt động với một trong số đó ở hầu hết các ví dụ.
Trong ví dụ này, có 2 trong số đó. Từ đầu ra, có vẻ như @make_italic
thực hiện trước tiên, sau đó @make_bold
.
Điều này có nghĩa là đối với các chức năng được trang trí, trước tiên nó sẽ chạy hàm đầu tiên sau đó chuyển sang đầu trang cho các trang trí khác? Giống như @make_italic
trước hết là @make_bold
, thay vì ngược lại.
Vì vậy, điều này có nghĩa rằng nó khác với tiêu chuẩn của phương pháp tiếp cận từ trên xuống trong hầu hết các ngôn ngữ lập trình? Chỉ cho trường hợp trang trí này? Hoặc là tôi sai?
vâng nó bắt đầu từ dưới lên qua kết quả cho –