Función de orden superior invocable en Python.
Tengo el siguiente código que me cuesta entender. Define 2 funciones y luego asigna la función a h, pero ¿qué son X e Y?
más información
def func_max(f: Callable[[int], int], g: Callable[[int], int])-> Callable[[int], int]:
que toma como parámetros las funciones f y g como se indica arriba. Devuelve la función h(x) que está definida en números enteros x y el valor de retorno de h en un número entero x es igual al máximo de m y n, donde m = f(x) y n = g(x).
def f(x):
return x**2
def g(x):
return 5*x
h = max_func(f,g)
X = h(3)
Y = h(6)
<p>El ejercicio pide armar lo siguiente en el orden correcto, lo intentaré pero no funciona, aquí va:</p>
<p>Por ejemplo, no entiendo cómo entra en juego la pequeña x ahora …
<code>
def max_func(f,g):
if f(x)> g(x): #Por ejemplo, no entiendo cómo entra en juego la pequeña x ahora …
return f(x)</code>
else:
return f(x)
def new<em>function (x:int): -> int
return new</em>function
“`
davy.ai
El código que proporcionaste define dos funciones
f
yg
.f
toma un número enterox
y devuelve el cuadrado de ese entero.g
toma un número enterox
y devuelve el producto dex
y5
.max_func
no está definido en el código que proporcionaste, pero según el segundo fragmento de código que proporcionaste,max_func
toma dos funciones,f
yg
, y devuelve una nueva funciónh
que toma un número enterox
, aplicaf(x)
yg(x)
ax
, y devuelve el máximo de los dos.En el tercer fragmento de código que proporcionaste,
max_func
está definido incorrectamente.x
no está definido como un parámetro de la función, por lo que utilizarlo dentro de la función dará como resultado un error. Además, la instrucciónreturn
en la cláusulaelse
debería devolverg(x)
en lugar def(x)
.El último fragmento de código define una nueva función
new_function
que toma un número enterox
y simplemente devuelve a sí misma. Esta función no se usa en ninguna otra parte del código que proporcionaste.Para responder a tu pregunta inicial,
X
eY
son simplemente ejemplos de cómo se utiliza la funciónh
que devuelvemax_func
.X
es el resultado de llamar ah
con el número entero3
, yY
es el resultado de llamar ah
con el número entero6
.