La funzione id(x)
restituisce un numero intero che rappresenta l’identità di x, un codice numerico univoco per tutto il ciclo di vita di x
Prova
x = 100 # x è un "riferimento" alla costante 100, con identità n1
y = "abc" # y è un "riferimento" alla costante "abc", con identità n2
print(id(x), x) # n1 100
print(id(y), y) # n2 abc
La funzione si utilizza per controllare se due variabili rappresentano riferimenti allo stesso oggetto.
x = 100
z1 = 100
z2 = x
z3 = 200
print(id(x) , x ) # n1 100
print(id(z1), z1) # n1 100
print(id(z2), z2) # n1 100
print(id(z3), z3) # n2 200
Le variabili x, z1, z2 fanno riferimento alla stessa costante 100.
Liste
Osserva…
x = [1, 2]
print(id(x) , x ) # n1 [1, 2]
print(id(x[0]), x[0]) # n2 1
print(id(x[1]), x[1]) # n3 2
z = x
print(id(z) , z ) # n1 [1, 2]
print(id(z[0]), z[0]) # n2 1
print(id(z[1]), z[1]) # n3 2
z[1] = 200
print(id(x) , x ) # n1 [1, 200]
print(id(x[0]), x[0]) # n2 1
print(id(x[1]), x[1]) # n4 200
print(id(z) , z ) # n1 [1, 200]
print(id(z[0]), z[0]) # n2 1
print(id(z[1]), z[1]) # n4 200
z = [10, 200]
print(id(x) , x ) # n1 [1, 200]
print(id(x[0]), x[0]) # n2 1
print(id(x[1]), x[1]) # n4 200
print(id(z) , z ) # n5 [10, 200]
print(id(z[0]), z[0]) # n6 10
print(id(z[1]), z[1]) # n4 200
x[1] e z[1] fanno riferimento alla stessa costante!