Доброго времени суток.
Я знаю об операторах сравнения
>, >=, <, <=, ==, !=
На днях, просматривая обучающие ролики по Python очередной раз наткнулся на использование оператора '
is' в качестве оператора сравнения на равенство.
https://youtu.be/B_b_bxBKoEA?t=153
Я погуглил и понял, что этот оператор предназначен для того, чтобы сравнивать, что оба операнда находятся в одной области памяти.
Да, с помощью
is сравнение иногда "проходит" корректно, а иногда нет. Вот что я испробовал:
>>> 123 is 123
True
>>> 1111111 is 1111111
True
>>> 'rijgogijdfkvjv304utgj03jrw' is 'rijgogijdfkvjv304utgj03jrw'
True
>>> 123 == 123
True
>>> a = 'Подпишитесь минимум на 10 тегов, чтобы следить за вопросами по интересным для вас темам.'
>>> b = 'Подпишитесь минимум на 10 тегов, чтобы следить за вопросами по интересным для вас темам.'
>>> a is b
False
>>> a == b
True
>>> a is 'Подпишитесь минимум на 10 тегов, чтобы следить за вопросами по интересным для вас темам.'
False
>>> 'Подпишитесь минимум на 10 тегов, чтобы следить за вопросами по интересным для вас темам.' is 'Подпишитесь минимум на 10 тегов, чтобы следить за вопросами по интересным для вас темам.'
True
>>> class A:
def f():
print('A.f')
>>> a = A()
>>> type(a) == A
True
>>> type(a) is A
True
Отсюда можно сделать вывод, что оператор is для сравнения можно использовать только для несложных конструкций, но это понятие растяжимое и оно нарушает "правило" python'а, что решение конкретной задачи должно быть однозначным (или как-то так).
В общем, почему человек на видео использовал
is для сравнения на равенство? Он просто не разобрался в этом вопросе или ему было лень написать 2 раза "=" или может использовать
is в каких-то случаях эффективней?