- оператор==проверяет равенство значений двух объектов - оператор 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
Тут прочти https://t.me/ru_python_beginners/1718461
А почему так не раьотает с числами?
Добавлю лишь, что == работает по методу __eq__ Для иса нет магии, но можно применить синглтон, и порождать сколь угодно объектов одного инстанса, т.е одинаковых.
a = 3 b = 1 + 2 print(a is b)
Обсуждают сегодня