python list arguments function-calls

python - Conversión de lista a*args cuando se llama a la función



subplot python (3)

En Python, ¿cómo convierto una lista a * args?

Necesito saber porque la función

scikits.timeseries.lib.reportlib.Report.__init__(*args)

quiere que varios objetos time_series pasen como * args, mientras que tengo una lista de objetos de timeseries.

Cualquier ayuda es muy apreciada :)


Puede usar el operador * antes de un iterable para expandirlo dentro de la llamada a la función. Por ejemplo:

timeseries_list = [timeseries1 timeseries2 ...] r = scikits.timeseries.lib.reportlib.Report(*timeseries_list)

(observe el * antes de timeseries_list )

De la documentación de python :

Si la expresión de sintaxis * aparece en la llamada a la función, la expresión debe evaluarse como iterable. Los elementos de este iterable se tratan como si fueran argumentos posicionales adicionales; si hay argumentos posicionales x1, ..., xN, y la expresión evalúa a una secuencia y1, ..., yM, esto es equivalente a una llamada con argumentos posicionales M + N x1, ..., xN, y1,. .., yM.

Esto también se cubre en el tutorial de Python, en una sección titulada Desempaquetar listas de argumentos , donde también se muestra cómo hacer algo similar con los diccionarios para argumentos de palabras clave con el operador ** .


sí, usar * arg pasando args a una función hará que python descomprima los valores en arg y lo pase a la función.

asi que:

>>> def printer(*args): print args >>> printer(2,3,4) (2, 3, 4) >>> printer(*range(2, 5)) (2, 3, 4) >>> printer(range(2, 5)) ([2, 3, 4],) >>>


*args solo significa que la función toma una cantidad de argumentos, generalmente del mismo tipo.

Consulte esta sección en el tutorial de Python para obtener más información.