¿Hay alguna manera de expandir una tupla de Python en una función, como parámetros reales?
Por ejemplo, aquí expand()hace la magia:
some_tuple = (1, "foo", "bar")
def myfun(number, str1, str2):
return (number * 2, str1 + str2, str2 + str1)
myfun(expand(some_tuple)) # (2, "foobar", "barfoo")
Sé que uno podría definir myfuncomo myfun((a, b, c)), pero por supuesto puede haber código heredado. Gracias
python
tuples
parameter-passing
AkiRoss
fuente
fuente

Tenga en cuenta que también puede expandir parte de la lista de argumentos:
fuente
some_func(*tuple_of_stuff, another_argument)def func(a,b,c,d): print(a,b,c,d)conargs = ('fee', 'fi', 'fo'); func(*args, 'fum')Eche un vistazo a la sección de tutoriales de Python 4.7.3 y 4.7.4. Habla de pasar tuplas como argumentos.
También consideraría usar parámetros con nombre (y pasar un diccionario) en lugar de usar una tupla y pasar una secuencia. Considero que el uso de argumentos posicionales es una mala práctica cuando las posiciones no son intuitivas o hay múltiples parámetros.
fuente
Este es el método de programación funcional. Levanta la función de expansión de tupla del azúcar de sintaxis:
apply_tuple = lambda f, t: f(*t)Ejemplo de uso:
La redefinición del curry
apply_tupleahorra muchaspartialllamadas a largo plazo.fuente
lambda f, t: f(*t)no usa módulos de terceros y soy un principiante de Python y esto me ayuda. Este es un enfoque puramente funcional. Si no usa este estilo, esta respuesta no es para usted.starmapdocs.python.org/3.7/library/itertools.html#itertools.starmap