==
Operatora Wartość testu równoważności. is
Tożsamość testy operator obiektu, testy Python czy te dwa są naprawdę ten sam obiekt (czyli na żywo pod tym samym adresem w pamięci).
>>> a = 'banana'
>>> b = 'banana'
>>> a is b
True
W tym przykładzie Python utworzył tylko jeden obiekt łańcuchowy i oba, a
i b
odnosi się do niego. Powodem jest to, że Python wewnętrznie buforuje i ponownie wykorzystuje niektóre ciągi jako optymalizację, tak naprawdę w pamięci jest tylko ciąg „banan”, współdzielony przez a i b; Aby wyzwolić normalne zachowanie, musisz użyć dłuższych ciągów:
>>> a = 'a longer banana'
>>> b = 'a longer banana'
>>> a == b, a is b
(True, False)
Kiedy tworzysz dwie listy, otrzymujesz dwa obiekty:
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
W tym przypadku powiedzielibyśmy, że dwie listy są równoważne, ponieważ mają te same elementy, ale nie identyczne, ponieważ nie są tym samym obiektem. Jeśli dwa obiekty są identyczne, są również równoważne, ale jeśli są równoważne, niekoniecznie są identyczne.
Jeśli a
odnosi się do obiektu, a ty przypisujesz b = a
, wówczas obie zmienne odnoszą się do tego samego obiektu:
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True