dwóch zmiennych w Pythonie mają takie same id
:dwóch zmiennych w Pythonie mają ten sam identyfikator, ale nie listy lub krotki
a = 10
b = 10
a is b
>>> True
Jeśli wezmę dwa list
s:
a = [1, 2, 3]
b = [1, 2, 3]
a is b
>>> False
według this link Senderle odpowiedział, że niezmienne referencje obiektów mają ten sam identyfikator, a zmienne obiekty, takie jak listy, mają różne identyfikatory.
Więc teraz według jego odpowiedź, krotki powinny mieć takie same identyfikatory - co oznacza:
a = (1, 2, 3)
b = (1, 2, 3)
a is b
>>> False
Najlepiej, jak krotki nie są zmienne, powinien on powrócić True
, ale wraca False
!
Jakie jest wytłumaczenie?
Trzeba rozróżnić zmiennych i obiektów (list i krotek) - jeśli porównać dwa obiekty jak to porównać ich adresy pamięci, które różnią się, mimo tej samej listy i krotki elementy. – dmitryro
Myślę, że źle zrozumiałeś odpowiedź, do której prowadzi link. Odrębne niezmienne obiekty mają różne identyfikatory. Ale dla liczb całkowitych <256 (dla większości tłumaczy) wartość jest wstępnie załadowana do pamięci i dlatego w twoim pierwszym przykładzie jest b –
Dziękuję @JacquesGaudin! Teraz sprawia mi to pewne zrozumienie. –