Decorador de função
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
valfor um único número, entãofretornaráy(val). - Se
valfor uma string igual a"length" or "area", entãofretornará 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ãofretornará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.67Observações
- Não é necessário arredondar os resultados; isso é feito nos testes.
- A função retornada
fdeve aceitar argumentos posicionais e nomeados.