Decorador de função

Published by Evgeny SH in

As funções em Python são cidadãs de primeira classe. Isso significa que podem ser passadas como argumentos, retornadas por uma função, modificadas e atribuídas a uma variável.

Um decorador é um padrão de projeto em Python que permite ao usuário adicionar novas funcionalidades a um objeto existente sem modificar sua estrutura. Crie um decorador de função que envolva uma função para criar outra com comportamento estendido. A entrada é uma função matemática simples y(x). A saída é uma função f(val, dict) com as seguintes propriedades:

  • Se val for um único número, então f retornará y(val).
  • Se val for uma string igual a "length" or "area", então f retornará uma aproximação linear por partes do comprimento da curva ou uma aproximação trapezoidal da área sob a curva. A região do comprimento da curva ou da área é fornecida no dicionário (por exemplo, {"begin": -3, "end": 2, "step": 0.1}).
  • Se len(vals) não for igual a um ou se não for uma string "length" or "area", então f retornará None.

Exemplos

f = decor(lambda x: x * x)
f() ➞ None
f(3) ➞ 9
f(3, 4) ➞ None
f("volume", **{"begin": 0, "end": 2, "step": 0.001}) ➞ None
f("area", **{"begin": 0, "end": 2, "step": 0.001}) ➞ 2.67

Observações

  • Não é necessário arredondar os resultados; isso é feito nos testes.
  • A função retornada f deve aceitar argumentos posicionais e nomeados.