[Python] Programma basso bassissimo
Marco Buttu
marco.buttu a gmail.com
Mer 13 Maggio 2015 12:15:10 CEST
On 12/05/2015 23:44, Gollum1 wrote:
> Il 12 maggio 2015 20:59:40 CEST, Daniele Zambelli <daniele.zambelli a gmail.com> ha scritto:
>
>>>>> a = [1, 2, 3, 4]
>>>>> b = [2, 3, 4, 5]
>>>>> c = [1, 2, 3, 4]
>>>>> a == b
>> False
>>>>> a == c
>> True
> Mi pare di ricordare che questa il ultima non sia poi così scontata...
Quest'ultima e' senza dubbio vera (si confronta il valore, non l'identita')
> cpython potrebbe semplificare le due liste con lo stesso oggetto, ma non è detto che lo faccia sempre è non è detto che lo facciano tutti gli interpreti... oppure ho detto una cavolata Marco Buttu?
CPython garantisce il contrario, ovvero che l'etichetta (il nome) `a` e
l'etichetta `c` facciano riferimento a due oggetti (mutabili) distinti
(diversa identita'). Questo e' sempre garantito per gli oggetti
mutabili. Non e' garantito nel caso di oggetti immutabili [1]:
Types affect almost all aspects of object behavior. Even the importance
of object identity is affected in some sense: for immutable types,
operations that compute new values may actually return a reference to
any existing object with the same type and value, while for mutable
objects this is not allowed. E.g., after a = 1; b = 1, a and b may or
may not refer to the same object with the value one, depending on the
implementation, but after c = []; d = [], c and d are guaranteed to
refer to two different, unique, newly created empty lists. (Note that c
= d = [] assigns the same object to both c and d.)
[1]
https://docs.python.org/3/reference/datamodel.html#objects-values-and-types
--
Marco Buttu
INAF-Osservatorio Astronomico di Cagliari
Via della Scienza n. 5, 09047 Selargius (CA)
Phone: 070 711 80 217
Email: mbuttu a oa-cagliari.inaf.it
Maggiori informazioni sulla lista
Python