[Python] Operatore Is: funzionamento

Francesco Cirać sydarex.ml a gmail.com
Sab 27 Giu 2009 17:00:17 CEST


Salve a tutti,
programmo in Python da diverso tempo, dalla versione 2.2 per la verità, 
con divertimento e profitto.
Oggi mi sono accorto di non avere per niente chiaro il funzionamento 
dell'operatore is.

Is *dovrebbe*, a quanto ne so, essere un operatore di identità.
Cioè restituire True se i due operandi sono la stessa variabile, non se 
hanno solo stesso valore.
Cioè:
 >>> a is b
Dovrebbe essere equivalente a:
 >>> id(a) == id(b)

Peṛ:
 >>> a = 5
 >>> b = 5
 >>> id(a)
505300184
 >>> id(b)
505300184
 >>> id(5)
505300184
Che non è affatto il comportamento che si aspetterebbe: per quanto ne so 
io, due variabili diverse non dovrebbero avere lo stesso indirizzo, 
condiviso anche con un literal poi!

E addirittura:
 >>> x = 8
 >>> y = 12
 >>> id(x)
505300232
 >>> id(y)
505300296
 >>> y=8
 >>> id(y)
505300232

Cercando su Google trovo qualche hit, ma niente di chiarificatore.
Immagino che il problema qui non riguardi la comprensione dell'operatore 
quanto della gestione delle variabili da parte di Python.
Sapete illuminarmi e/o linkare del materiale sul comportamento di Python 
per quanto riguarda la questione?

-- 
Francesco Cirać - Sydarex



Maggiori informazioni sulla lista Python