¿Cómo funciona el uso de una función (devolución de llamada) como argumento para otra función en Python?

Resuelto a7664 asked hace 13 años • 0 respuestas

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 anotherfuncargumento y una lista o tupla de argumentos como extraArgsy myfuncllamar a la función pasada con esos argumentos.

es posible? ¿Cómo puedo hacerlo?

a7664 avatar Jun 09 '11 14:06 a7664
Aceptado

Sí, esto es posible. myfuncPuede 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
Manuel Salvadores avatar Jun 09 '2011 07:06 Manuel Salvadores

Aquí hay otra forma de usar *args(y opcionalmente **kwargstambié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, *argsy **kwargsdeben aparecer en ese orden y deben ser los últimos argumentos de la función ( b) que llama function.

sabujp avatar Sep 16 '2015 21:09 sabujp