- оператор
==
проверяет равенство значений двух объектов
- оператор
is
проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти
Python (CPython, если быть точнее) в целях производительности кеширует короткие строки и малые целые числа, поэтому возможны такие казусы:
>>> str1 = 'hello'
>>> str2 = 'hello'
>>> str1 == str2
True
>>> str1 is str2
True
>>>
Но стоит сделать строку длиннее и всё встаёт на свои места:
>>> str1 = 'hello, my crazy world'
>>> str2 = 'hello, my crazy world'
>>> str1 == str2
True
>>> str1 is str2
False