Las funciones en Python son ciudadanas de primera clase. Esto significa que pueden pasarse como argumentos, devolverse desde una función, modificarse y asignarse a una variable.
Un decorador es un patrón de diseño en Python que permite al usuario agregar nueva funcionalidad a un objeto existente sin modificar su estructura. Crea un decorador de funciones que envuelva una función para crear otra con un comportamiento ampliado. La entrada es una función matemática simple y(x). La salida es una función f(val, dict) con las siguientes propiedades:
val es un solo número, entonces f devuelve y(val).val es una cadena igual a "length" or "area", entonces f devuelve una aproximación lineal por tramos de la longitud de la curva o una aproximación trapezoidal del área bajo la curva. La región para la longitud de la curva o el área se proporciona en el diccionario (por ejemplo, {"begin": -3, "end": 2, "step": 0.1}).len(vals) no es igual a uno o si no es una cadena "length" or "area", entonces f devuelve None.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.67f debe aceptar argumentos posicionales y de palabras clave.