/ / Защо се нуждаем от id () в Python, ако вече има хеш () - python, hash, objectid

Защо се нуждаем от id () в Python, ако вече има хеш () - python, hash, objectid

Документацията за Python за id() функция казва

ID (обект) Връщане на "идентичността" на обект. Това е цяло число, което е гарантирано уникално и постоянно за този обект по време на неговия живот. Два предмета с време на живот, които не се припокриват, могат да имат една и съща стойност id ().

Така че, на практика тя гарантира, че уникалността е хеш функция, но само в рамките на жизнения цикъл на обекта и без хладно нещо, че хеш едва се възстановява.

Защо трябва да се използва id()?

Отговори:

5 за отговор № 1

hash е равно на равен обекти и може да бъде равен дори и при неравни обекти. hash дори не съществуват за обекти, които могат да бъдат променяни.

id е гарантирано, че е уникален за даден обект по време на неговия живот и не му пука за мутация.

Използваните случаи са напълно различни.

>>> x, y, z = 1, 1.0, [1]
>>> hash(x), hash(y)
(1, 1)
>>> hash(z)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: "list"
>>> id(x), id(y)
(10832608, 139668416746072)
>>> id(z)
139668282136008
>>> z.append(2)
>>> id(z)
139668282136008
>>> hash(-1), hash(-2)
(-2, -2)

1 за отговор № 2

Можете да мислите за id функция в Python като нещо като показалка, еуникален номер за този обект. така че два идентични обекта могат да имат един и същ хеш, но различни идентификатори (освен ако хешът не е базиран на базата, в който случай не е гарантирано връщането на същия хеш на различни процеси)

проверете и този отговор За какво се използва функцията id ()?