Escrevendo Decoradores Parametrizados
Deslize para mostrar o menu
Quando você deseja que seu decorador se comporte de maneira diferente dependendo de alguma entrada, é necessário criar um decorador parametrizado. Diferente dos decoradores comuns, que recebem apenas a função como argumento, os decoradores parametrizados aceitam seus próprios argumentos, permitindo controlar seu comportamento de forma dinâmica. Isso é especialmente útil quando se deseja reutilizar um decorador em várias situações com configurações diferentes.
Estrutura de um Decorador Parametrizado:
- A função externa recebe os argumentos do decorador;
- A função intermediária é o decorador propriamente dito, que recebe a função a ser decorada;
- A função interna envolve e controla a execução da função original.
Essa abordagem em camadas permite passar argumentos para o decorador, que ficam disponíveis quando a função decorada é chamada.
12345678910111213141516171819202122# Outer function: accepts the decorator argument 'times' def repeat(times): # The actual decorator that takes the function to be decorated def decorator(func): # Inner function: wraps and controls the execution of 'func' def wrapper(*args, **kwargs): result = None # Call the original function 'times' times for _ in range(times): result = func(*args, **kwargs) return result # Return the wrapper to replace the original function return wrapper # Return the decorator function return decorator # Apply the repeat decorator @repeat(3) def say_hello(): print("Hello!") say_hello()
1. Como um decorador parametrizado difere de um decorador comum?
2. Por que você pode querer passar argumentos para um decorador?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo