ExpertiDict

Python · Intermediário · Inglês · Técnico

decorator

/ˈdɛkəˌɹeɪɾɚ/substantivo

Função que recebe outra função (ou classe) e devolve uma versão modificada, aplicada com @ acima da definição. Serve para adicionar log, cache, autorização e outros comportamentos.

Onde usar

Aparece em @app.route, @property e @pytest.fixture. Num review, vale checar se o decorator usa functools.wraps para preservar o nome e a docstring da função original.

Em código

def log(f):
  def novo(*a):
    print('chamou', f.__name__)
    return f(*a)
  return novo
@log
def soma(a, b):
  return a + b

Exemplos

I wrote a decorator to log every call.

Escrevi um decorator para registrar cada chamada.

The route is registered by a decorator.

A rota é registrada por um decorator.

Cuidado

Não confunda com o padrão de projeto Decorator da orientação a objetos; aqui é um recurso de sintaxe para envolver funções.

Sinônimos

decorador

Veja também

Todos os termos de Python