[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