2.11. Assegnare valori multipli in un colpo solo

Una delle più comode scorciatoie di programmazione in Python consiste nell'usare sequenze per assegnare valori multipli in un colpo solo.

Esempio 2.27. Assegnare valori multipli in un colpo solo

>>> v = ('a', 'b', 'e')
>>> (x, y, z) = v 1
>>> x
'a'
>>> y
'b'
>>> z
'e'
1 v è una tupla di tre elementi, mentre (x, y, z) è una tupla di tre variabili. L'assegnamento del valore di una alle altre assegna ogni valore di v ad ognuna delle altre variabili seguendo l'ordine della tupla.

Questo consente molti utilizzi. Mi capita spesso di assegnare nomi ad un range di valori. In C, usereste enum e nominereste manualmente ogni costante ed il suo relativo valore, cosa che diventa particolarmente noiosa quando i valori sono consecutivi. In Python, potete usare per gli assegnamenti multi-variabili la funzione built-in range per assegnare rapidamente valori consecutivi.

Esempio 2.28. Assegnare valori consecutivi

>>> 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 funzione built-in range ritorna una lista di interi. Nella sua forma più semplice, prende un limite superiore e ritorna una lista partente da 0 che continua verso l'alto senza includere il limite superiore. (Se preferite potete passare altri parametri per specificare una base diversa da 0 ed un incremento diverso da 1. Potete stampare print range.__doc__ per i dettagli.)
2 MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY e SUNDAY sono le variabili che stiamo definendo. (Questo esempio proviene dal modulo calendar, un piccolo e divertente modulo che stampa calendari, come il programma UNIX cal. Il modulo calendar definisce costanti intere per i giorni della settimana.)
3 Ora ogni variabile ha il suo valore: MONDAY è 0, TUESDAY è 1 e così via.

Potete anche usare usare l'assegnamento multi-variabile per costruire funzioni che ritornino valori multipli, semplicemente ritornando una tupla di tutti i valori. Chi chiama la funzione può trattarla come una tupla od assegnare i valori a singole variabili. Molte librerie standard di Python lo fanno, incluso il modulo os, del quale discuteremo nel capitolo 3.

Ulteriori letture