Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Encadeamento e Empilhamento de Decoradores | Dominando Iteradores e Decoradores em Python
Conceitos de Programação Funcional em Python

bookEncadeamento e Empilhamento de Decoradores

Deslize para mostrar o menu

Ao trabalhar com decorators em Python, muitas vezes é necessário aplicar mais de um decorator a uma única função. Isso é conhecido como empilhamento ou encadeamento de decorators. O empilhamento de decorators é feito colocando várias linhas de decorator, uma após a outra, diretamente acima da definição da função. A ordem em que os decorators são empilhados é importante, pois afeta como a função é envolvida e como cada decorator interage com os demais. O decorator mais próximo da função é aplicado primeiro, e cada decorator subsequente envolve o resultado do anterior. Isso significa que o decorator no topo da pilha é o invólucro mais externo, enquanto o mais próximo da função é o mais interno.

O exemplo abaixo define dois decorators, decorator_one e decorator_two, empilhados acima de uma função chamada greet. A ordem de empilhamento determina como os decorators são aplicados.

123456789101112131415161718192021222324252627
# Prints messages before and after the function call def decorator_one(func): def wrapper(*args, **kwargs): print("Decorator One: Before") result = func(*args, **kwargs) print("Decorator One: After") return result return wrapper # Also prints messages before and after the function call def decorator_two(func): def wrapper(*args, **kwargs): print("Decorator Two: Before") result = func(*args, **kwargs) print("Decorator Two: After") return result return wrapper # Stacking decorators # decorator_two is applied first (innermost), # then decorator_one wraps the result (outermost) @decorator_one @decorator_two def greet(name): print(f"Hello, {name}!") greet("Alice")
copy
Note
Nota

Observe que decorator_two é aplicado primeiro a greet, e então decorator_one envolve o resultado. Isso significa que o decorador mais próximo da função é o mais interno, e o mais acima é o mais externo. A ordem de empilhamento é importante, pois afeta o comportamento da função decorada.

question mark

Em que ordem os decoradores empilhados são aplicados em Python?

Selecione todas as respostas corretas

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 4. Capítulo 5
some-alt