Ho due oggetti definiti dall'utente, ad esempio a
e b
.
Entrambi questi oggetti hanno gli stessi valori hash
.
Tuttavia, lo id(a)
e lo id(b)
non sono uguali.Differenza tra hash() e id()
Inoltre,
>>> a is b
False
>>> a == b
True
Da questa osservazione, posso dedurre quanto segue?
- Gli oggetti non uguali possono avere gli stessi valori
hash
. - Gli oggetti uguali devono avere gli stessi valori
id
. - Ogniqualvolta si chiama
obj1 is obj2
, vengono confrontati i valoriid
di entrambi gli oggetti, non i loro valorihash
.
La tua seconda inferenza sarebbe facilmente invalidata confrontando 'id (a)' e 'id (b)'. – chepner
@chepner Grazie. Ho capito ora –
Ho scritto come vengono calcolati gli hash per i tipi built-in [qui] (http://delimitry.blogspot.ru/2014/07/python-hash-calculation-algorithms.html). Si può notare che il calcolo di 'hash' per tipo di oggetto dipende dal suo' id'. – Delimitry