[Python] Operatore Is: funzionamento

Francesco Ciracì sydarex.ml a gmail.com
Sab 27 Giu 2009 17:45:51 CEST


Manlio Perillo ha scritto:
> Esatto.
> Ma io sostituirei "variabile" con "oggetto".
>
>   
True =)
> La risposta è semplice: `a` e `b` rappresentano lo stesso oggetto.
> Questa è la conseguenza di una ottimizzazione di CPython (la
> implementazione ufficiale di Python): gli interi "piccoli" sono
> conservati in cache, in modo da evitare allocazioni aggiuntive.
>
> Contro esempio:
>
>   
>>>> a = 9999
>>>> b = 9999
>>>> a is b
>>>>         
> False
>
>   
>>>> a = 10
>>>> b = 10
>>>> a is b
>>>>         
> True
>
>
>   
Grazie della risposta chiarissima.
Immaginavo una cosa del genere. =)
> Non hai chiaro come funzionano le "variabili" in Python.
> http://docs.python.org/reference/executionmodel.html#naming-and-binding
>
> Le variabili sono semplici referenze ad oggetti; sono delle "etichette"
> che permettono di riferirsi ad un dato oggetto.
>
>   
Si. Ciò che non mi è chiaro è come vengono assegnati: ho sempre dato per 
scontato che ci fosse una corrispondenza biunivoca tra variabile e oggetto.
Grazie del link, lo leggo subito.

>
> Cosa ha di diverso questo esempio rispetto al primo che hai fatto?
>   
Beh, mentre immaginavo più o meno cosa accadesse nel caso delle 
variabili dallo stesso valore; ma il cambiare indirizzo è una cosa che 
mi ha fatto rimanere un pò allibito.
Mi rendo conto comunque che sia perché non penso in termini di divisione 
*netta* tra la variabile e l'oggetto. =)

Grazie della risposta,

-- 
Francesco Ciracì - Sydarex



Maggiori informazioni sulla lista Python