Khóa học Phát triển Python Nâng cao
Chương
>
Cấp độ
Trình trang trí
Sử dụng Decorators
Các hàm tùy chỉnh có phạm vi sử dụng rộng rãi, tuy nhiên đôi khi bạn có thể muốn thêm chức năng bổ sung vào một hàm có sẵn. Điều này được gọi là decorator, nó là một hàm được thiết kế để mở rộng một hàm đã có sẵn, do đó mới có tên gọi như vậy.
Đối với cấp độ này, các lò nướng cần được chuẩn bị sẵn sàng để thực hiện quá trình chế biến thực phẩm. Sử dụng decorators để gọi open() và close() trong quá trình nạp củi vào lò nướng.

Mục tiêu
Lấp đầy các lò nung bằng củi và cài đặt các lò sao cho chúng có thể được chuẩn bị để nấu ăn bằng cách sử dụng decorators.
Các lò nung bằng gạch cần được chuẩn bị để bạn có thể nướng thức ăn cho buổi tối sau đó. Các lò đang tắt và trống rỗng, cần một ít củi để thắp lửa. Hãy lấy củi và cho vào các lò để bạn có thể bắt đầu nấu ăn. Mặc dù bạn có thể làm điều này thủ công hoặc bằng cách sử dụng một hàm tùy chỉnh, tuy nhiên quá trình này có thể được tăng tốc bằng cách sử dụng decorators.
Decorators là những phần mở rộng có thể được thêm vào một hàm tùy chỉnh nhằm mở rộng chức năng của nó theo yêu cầu mà không cần làm quá phức tạp bằng các điều kiện.
# Decorator, thêm chức năng phụ cho một hàm khác
def load_wood(func):
def load():
player.open()
func()
player.close()
return load
# Hàm tùy chỉnh có thể được trang trí
def add_wood():
player.place("firewood")
player.speak("Three logs placed in oven")
# Trang trí hàm tùy chỉnh
prep_oven = load_wood(add_wood)
Đi đến kho chứa ở dưới cùng của bản đồ và thu thập tất cả bốn (4) bó củi. Đi đến dấu X màu vàng và sử dụng hàm read() để kiểm tra ghi chú trên quầy hiển thị nhiệt độ mà các lò nên được cài đặt. Ghi chú lại thông tin trong cửa sổ pop-up vì bạn sẽ cần nó sau này.
Sau đó, hãy đi đến các dấu X nhẹ bên cạnh lò và sử dụng hàm đã được trang trí để đặt củi, như sau: prep_oven(). Khi bạn đặt củi vào lò, hãy đi đến các dấu X tối trên thảm có màu sắc và sử dụng hàm bất đồng bộ question() để cài đặt nhiệt độ cho các lò.
Hàm hỗ trợ sẽ được cài đặt sẵn trước với tên là set_temperature(), và câu trả lời của bạn cho câu hỏi sẽ xác định xem nhiệt độ sẽ được cài đặt thành High hay Medium. Cài đặt nhiệt độ bằng cách viết hàm và trả lời câu hỏi với ghi chú bạn đã đọc trước đó, với mỗi nhiệt độ được cài đặt theo thảm có màu sắc tương ứng. Nhớ sử dụng await khi sử dụng các hàm bất đồng bộ, như sau: await set_temperature()
Khi bạn đã chuẩn bị và cài đặt tất cả bốn (4) lò, bạn sẽ hoàn thành cấp độ.