id()

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!