¿Puede una función de Python ser un argumento de otra función?
Decir:
def myfunc(anotherfunc, extraArgs):
# run anotherfunc and also pass the values from extraArgs to it
pass
Entonces, estas son básicamente dos preguntas:
- ¿Está permitido en absoluto?
- Y si es así, ¿cómo uso la función dentro de la otra función? ¿Necesitaría usar exec (), eval () o algo así? Nunca necesité meterme con ellos.
Por cierto, extraArgs es una lista / tupla de los argumentos de otra función.
Respuestas:
Si.
Para ser más específico ... con varios argumentos ...
fuente
Aquí hay otra manera de usar
*args
(y también opcionalmente),**kwargs
:Salida
Tenga en cuenta que
function
,*args
,**kwargs
tiene que ser en ese orden y tienen que ser los últimos argumentos de la función de llamar a la función.fuente
Las funciones en Python son objetos de primera clase. Pero la definición de su función está un poco fuera de lugar .
fuente
Claro, es por eso que Python implementa los siguientes métodos donde el primer parámetro es una función:
fuente
anotherfunc(*extraArgs)
fuente
Por ejemplo:
Cuando llamas a myfunc, haces esto:
Esto imprimirá el valor de retorno de anotherfunc.
¡Espero que esto ayude!
fuente
Función dentro de la función: también podemos usar la función como parámetro.
En otras palabras, podemos decir que una salida de una función también es una referencia para un objeto, vea a continuación cómo la salida de la función interna hace referencia a la función externa como a continuación.
el resultado será .. 14
Espero que esto ayude.
fuente
fuente
Eso creo que sería una muestra más adecuada. Ahora, lo que me pregunto es si hay una forma de codificar la función para usar dentro del envío de argumentos a otra función. Creo que hay en C ++, pero en Python no estoy seguro.
fuente
Los decoradores son muy poderosos en Python ya que permiten a los programadores pasar funciones como argumento y también pueden definir funciones dentro de otra función.
Salida
fuente