Exercícios
Avalie seus conhecimentos sobre decoradores em Python com questões sobre sintaxe, funções de primeira classe, closures e wrappers. Explore a aplicação e a composição de decoradores, o uso de functools.wraps para preservar metadados, o encaminhamento de argumentos com *args e **kwargs e a criação de decoradores parametrizados. O questionário também aborda decoradores em classes, propriedades com setter, combinação de @classmethod e @abstractmethod, tratamento e relançamento de exceções, além de boas práticas para decorar funções assíncronas com async def. Ideal para estudantes e desenvolvedores que desejam dominar padrões reutilizáveis e seguros na linguagem Python.
Responda às questões abaixo e confira a explicação de cada resposta.
0/15 respondidas
Áudio automático ativado: as próximas questões serão lidas ao clicar em Continuar.
A sintaxe @registrar, colocada imediatamente antes de def executar, aplica o decorador à função.
Em Python, funções são objetos de primeira classe: podem ser atribuídas a variáveis, passadas como argumentos e retornadas por outras funções.
Uma closure preserva referências do escopo em que foi criada. Assim, o wrapper pode continuar chamando a função original recebida pelo decorador.
A notação @cronometra equivale a redefinir o nome da função com o resultado de cronometra(calcular).
functools.wraps copia metadados relevantes para o wrapper e define __wrapped__, facilitando inspeção, documentação e depuração.
Um decorador parametrizado usa uma função fábrica. A chamada externa recebe os parâmetros e retorna o decorador que, depois, receberá a função original.
Após a decoração, o nome normalmente referencia o wrapper retornado. Por isso, ele recebe a chamada primeiro e decide quando executar a função original.
*args desempacota argumentos posicionais e **kwargs desempacota argumentos nomeados, preservando a forma da chamada original.
Decoradores são aplicados de baixo para cima. Primeiro ocorre decorador_b(gerar); depois, o resultado é passado para decorador_a.
@abstractmethod deve ser o decorador mais interno. Portanto, fica imediatamente antes de def, enquanto @classmethod fica acima dele.
Depois de criar a propriedade com @property, seu setter é registrado com @temperatura.setter, normalmente mantendo o mesmo nome de método.
A expressão @Contador equivale a processar = Contador(processar). O nome passa a referenciar uma instância chamável por implementar __call__.
O uso conjunto de *args e **kwargs permite receber e encaminhar diferentes assinaturas sem impor parâmetros específicos no wrapper.
Após registrar a falha, um raise sem argumentos dentro do bloco except relança a mesma exceção e preserva sua propagação.
Para preservar a interface assíncrona, o wrapper também deve ser declarado com async def e aguardar a função original com await.

Curso GratuitoAnálise e projeto de sistemas
11h02m
9 exercícios

Curso GratuitoPython do Zero ao Avançado
28h22m
54 exercícios

Curso GratuitoProgramação orientada a objeto usando Java
11h56m
10 exercícios

Curso GratuitoProgramação em C
11h21m
22 exercícios

Curso GratuitoRuby on Rails para iniciantes
16h31m
32 exercícios

Curso GratuitoJava
27h43m
62 exercícios

Curso GratuitoProgramação em Python
10h21m
27 exercícios

Curso GratuitoEngenharia de software
7h58m
24 exercícios
Milhares de cursos online em vídeo, ebooks e áudiobooks.
Para testar seus conhecimentos no decorrer dos cursos online
Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail
Baixe nosso aplicativo pelo QR Code ou pelos links abaixo:.
+ de 10 milhões
de alunos
Certificado grátis e
válido em todo o Brasil
60 mil exercícios
gratuitos
4,8/5 classificação
nas lojas de apps
Cursos gratuitos em
vídeo, ebooks e audiobooks