==
Тестове значення оператора еквівалентність. is
Ідентичність тести оператора об'єкта, тести Python чи два дійсно той самий об'єкт (тобто, жити за тією ж адресою в пам'яті).
>>> a = 'banana'
>>> b = 'banana'
>>> a is b
True
У цьому прикладі Python створив лише один об'єкт рядка, і обидва, a
і b
посилається на нього. Причина полягає в тому, що Python внутрішньо кешує та повторно використовує деякі рядки як оптимізацію, в пам’яті дійсно є лише рядок «банан», який поділяється a і b; Щоб запустити нормальну поведінку, потрібно використовувати довші рядки:
>>> a = 'a longer banana'
>>> b = 'a longer banana'
>>> a == b, a is b
(True, False)
Створюючи два списки, ви отримуєте два об'єкти:
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
У цьому випадку ми б сказали, що два списки є рівнозначними, оскільки вони мають однакові елементи, але не тотожні, оскільки вони не є одним і тим же об'єктом. Якщо два об'єкти однакові, вони також є рівнозначними, але якщо вони рівнозначні, вони не обов'язково однакові.
Якщо a
посилається на об'єкт і ви призначаєте b = a
, то обидві змінні посилаються на один і той же об'єкт:
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True