1.11. Asignación de múltiples valores de una vez

Uno de los mejores atajos de programación en Python es el uso de secuencias para asignar múltiples valores de una vez.

Ejemplo 1.26. Asignación de múltiples valores de una vez

>>> v = ('a', 'b', 'e')
>>> (x, y, z) = v 1
>>> x
'a'
>>> y
'b'
>>> z
'e'
1 v es una tupla con tres elementos, y (x, y, z) es una tupla con tres variables. Al asignar una a la otra se asigna cada uno de los valores de v a cada una de las variables, en orden.

Esto tiene varios usos. Con frecuencia, necesito asignar nombres a un rango de valores. En C, se utilizaría enum y se haría una lista a mano de cada constante y su valor asociado, lo cual resulta especialmente tedioso cuando los valores son consecutivos. En Python, puede utilizarse la función incorporada range con asignación a múltiples variables para asignar rápidamente valores consecutivos.

Ejemplo 1.27. Asignación de valores consecutivos

>>> range(7)                                                                    1
[0, 1, 2, 3, 4, 5, 6]
>>> (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7) 2
>>> MONDAY                                                                      3
0
>>> TUESDAY
1
>>> SUNDAY
6
1 La función incorporada range devuelve una lista de enteros. En su forma más simple, toma un límite superior y devuelve una lista que comienza en 0 y sigue hasta el límite superior, sin incluirlo. (Si le parece, puede pasar otros parámetros para especificar un origen distinto de 0 y un incremento distinto de 1. Puede consultar range.__doc__ para ver los detalles.)
2 MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY y SUNDAY son las variables que vamos a definir. (Este ejemplo proviene del módulo calendar, un pequeño y divertido módulo que imprime calendarios, como el programa cal de UNIX. El módulo calendar define constantes enteras para los días de la semana.)
3 Ahora cada variable tiene su valor: MONDAY es 0, TUESDAY es 1, y así sucesivamente.

También puede utilizarse la asignación múltiple para construir funciones que devuelvan valores múltiples, simplemente devolviendo una tupla con todos los valores. Tras la llamada, el valor devuelto puede tratarse como una tupla, o asignar los valores a variables individuales. Muchas bibliotecas estándar de Python hacen esto, incluido el módulo os, que veremos en el capítulo 3.

Lecturas complementarias