Curso Avançado de Desenvolvimento Python
Capítulo
>
Nível
Decoradores
Usando Decoradores
Funções personalizadas têm uma ampla variedade de usos, no entanto, às vezes você pode querer adicionar funcionalidades adicionais a uma função já existente. Isso é chamado de decorator, que é uma função projetada para aumentar uma função existente, daí o nome.
Para este nível, os fornos precisam estar preparados para que fiquem prontos para o preparo dos alimentos. Use decorators para open() e close() entre carregar lenha nos fornos.

Objetivo
Preencha os fornos com lenha e prepare-os para cozinhar utilizando decorators.
Os fornos de tijolo precisam ser preparados para que você possa assar a comida para mais tarde à noite. Os fornos estão desligados e vazios e requerem lenha para serem acesos. Pegue alguma lenha e carregue-a nos fornos para que você possa começar a cozinhar. Embora você possa fazer isso manualmente ou utilizando uma função personalizada, o processo pode ser agilizado usando decorators.
Decorators são complementos que podem ser adicionados a uma função personalizada a fim de ampliar sua funcionalidade sob demanda sem a necessidade de complicá-la com condições.
# Decorator, adds extra functionality to another function
def load_wood(func):
def load():
player.open()
func()
player.close()
return load
# Custom function that can be decorated
def add_wood():
player.place("firewood")
player.speak("Three logs placed in oven")
# Decorate the custom function
prep_oven = load_wood(add_wood)
Caminhe até o depósito no final do mapa e colete os quatro (4) feixes de toras. Caminhe até a marca de X dourada e use a função read() para verificar o memorando na barra que exibe as temperaturas que os fornos devem ser ajustados. Anote as informações na janela pop-up, pois você precisará delas mais tarde.
Em seguida, caminhe até as marcas de X claras próximas ao forno e use a função decorada para posicionar a lenha, assim: prep_oven(). Ao colocar a lenha no forno, caminhe até as marcas de X escuras nos tapetes coloridos e use a função assíncrona question() para definir a temperatura dos fornos.
A função de suporte será configurada previamente, chamada set_temperature(), e sua resposta à pergunta determinará se a temperatura será configurada para High ou para Medium. Defina a temperatura escrevendo a função e respondendo à pergunta com o memorando que você leu anteriormente, com cada temperatura configurada de acordo com o tapete colorido correspondente. Lembre-se de usar await ao utilizar funções assíncronas, assim: await set_temperature()
Uma vez que você preparar e ajustar os quatro (4) fornos, você terá completado o nível.