/ / Dlaczego ktoś potrzebuje id () w Pythonie, jeśli jest już hash () - python, hash, objectid

Dlaczego ktoś potrzebuje id () w Pythonie, jeśli jest już hash () - python, hash, objectid

Dokumentacja Pythona dla id() funkcja mówi

id (obiekt) Zwróć "tożsamość" obiektu. Jest to liczba całkowita, która jest gwarantowana jako unikalna i stała dla tego obiektu podczas jego trwania. Dwa obiekty z nienakładającymi się okresami życia mogą mieć tę samą wartość id ().

Praktycznie więc zapewnia wyjątkowość jako funkcję mieszającą, ale tylko w ciągu życia obiektu i bez fajnej rzeczy, że hash jest trudny do zrekonstruowania.

Dlaczego powinienem użyć id()?

Odpowiedzi:

5 dla odpowiedzi № 1

hash jest równy równy obiekty i mogą być równe nawet dla nierównych obiektów. hash nie istnieje nawet w przypadku obiektów zmiennych.

id Gwarantuje, że jest unikalny dla obiektu podczas jego trwania i nie dba o mutację.

Przypadki użycia są zupełnie inne.

>>> 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 dla odpowiedzi nr 2

Możesz myśleć o id funkcja w pythonie przypomina wskaźnik, tak właśnie jestunikalny numer dla tego obiektu. więc dwa identyczne obiekty mogą mieć ten sam skrót, ale różne identyfikatory (chyba że skrót jest oparty na odwołaniach, w którym to przypadku nie jest gwarantowane, aby zwracać ten sam skrót w różnych procesach)

sprawdź także tę odpowiedź Do czego służy funkcja id ()?