¿Cómo funciona el uso de una función (devolución de llamada) como argumento para otra función en Python?
Supongamos que tengo algún código como:
def myfunc(anotherfunc, extraArgs):
# somehow call `anotherfunc` here, passing it the `extraArgs`
pass
Quiero pasar otra función existente como anotherfunc
argumento y una lista o tupla de argumentos como extraArgs
y myfunc
llamar a la función pasada con esos argumentos.
es posible? ¿Cómo puedo hacerlo?
Aceptado
Sí, esto es posible. myfunc
Puede llamar a la función pasada como:
def myfunc(anotherfunc, extraArgs):
anotherfunc(*extraArgs)
Aquí hay un ejemplo completamente trabajado:
>>> def x(a, b):
... print('a:', a, 'b:', b)
...
>>> def y(z, t):
... z(*t)
...
>>> y(x, ('hello', 'manuel'))
a: hello b: manuel
Aquí hay otra forma de usar *args
(y opcionalmente **kwargs
también):
def a(x, y):
print(x, y)
def b(other, function, *args, **kwargs):
function(*args, **kwargs)
print(other)
b('world', a, 'hello', 'dude')
Producción
hello dude
world
Tenga en cuenta que function
, *args
y **kwargs
deben aparecer en ese orden y deben ser los últimos argumentos de la función ( b
) que llama function
.