In Python, l'operatore = è usato per assegnare valori alle variabili.
a = 100
b = 200
print(a)
# 100
print(b)
# 200
Come nell'esempio precedente, potete assegnare valori a più variabili in una volta sola invece che una alla volta, il che è conveniente perché richiede solo una semplice linea di codice da scrivere.
Sono descritti i seguenti due casi.
- Assegnare più valori a più variabili
- Assegnare lo stesso valore a più variabili
Assegnare più valori a più variabili
Valori multipli possono essere assegnati a più variabili simultaneamente separando le variabili e i valori con delle virgole.
a, b = 100, 200
print(a)
# 100
print(b)
# 200
Tre o più variabili, ciascuna di tipo diverso, sono accettabili.
a, b, c = 0.1, 100, 'string'
print(a)
# 0.1
print(b)
# 100
print(c)
# string
Se c'è una variabile sul lato sinistro, viene assegnata come tupla.
a = 100, 200
print(a)
print(type(a))
# (100, 200)
# <class 'tuple'>
Se il numero di variabili sul lato sinistro non corrisponde al numero di valori sul lato destro, risulterà un errore ValueError, ma il resto può essere assegnato come lista aggiungendo un asterisco alla variabile.
# a, b = 100, 200, 300
# ValueError: too many values to unpack (expected 2)
# a, b, c = 100, 200
# ValueError: not enough values to unpack (expected 3, got 2)
a, *b = 100, 200, 300
print(a)
print(type(a))
# 100
# <class 'int'>
print(b)
print(type(b))
# [200, 300]
# <class 'list'>
*a, b = 100, 200, 300
print(a)
print(type(a))
# [100, 200]
# <class 'list'>
print(b)
print(type(b))
# 300
# <class 'int'>
Per maggiori informazioni sugli asterischi e su come assegnare elementi di una tupla o di una lista a variabili multiple, si veda il seguente articolo.
Assegnare lo stesso valore a più variabili
Lo stesso valore può essere assegnato a più variabili usando = consecutivamente. Questo è utile per inizializzare più variabili allo stesso valore.
a = b = 100
print(a)
# 100
print(b)
# 100
Più di 3 pezzi sono accettabili.
a = b = c = 'string'
print(a)
# string
print(b)
# string
print(c)
# string
Dopo aver assegnato lo stesso valore, un altro valore può essere assegnato a uno di essi.
a = 200
print(a)
# 200
print(b)
# 100
Fate attenzione quando assegnate oggetti mutabili come liste e tipi di dizionario, piuttosto che oggetti immutabili (immutabili) come interi, numeri in virgola mobile e stringhe.
Usare = consecutivamente significa che tutte le variabili puntano allo stesso oggetto, quindi se si cambia il valore di un elemento o si aggiunge un nuovo elemento, anche l'altro cambierà.
a = b = [0, 1, 2]
print(a is b)
# True
a[0] = 100
print(a)
# [100, 1, 2]
print(b)
# [100, 1, 2]
Come sotto.
b = [0, 1, 2]
a = b
print(a is b)
# True
a[0] = 100
print(a)
# [100, 1, 2]
print(b)
# [100, 1, 2]
Se volete elaborarli separatamente, assegnateli semplicemente a ciascuno.
after c = []; d = [], c and d are guaranteed to refer to two different, unique, newly created empty lists. (Note that c = d = [] assigns the same object to both c and d.)
3. Data model — Python 3.10.4 Documentation
a = [0, 1, 2]
b = [0, 1, 2]
print(a is b)
# False
a[0] = 100
print(a)
# [100, 1, 2]
print(b)
# [0, 1, 2]
Ci sono anche metodi per generare copie superficiali e profonde con copy() e deepcopy() nel modulo copy.