В документации Python об операторе is
говорится:
Операторы
is
иis не
тест для идентификатор объекта:x is y
истинно, если и только еслиx
иy
являются одним и тем же объектом.x не y
дает обратную истину значение.
Давайте попробуем это:
>>> def m():
... pass
...
>>> m is m
True
В документации Python также сказано :
Из-за автоматической сборки мусора, бесплатные списки и динамичный характер дескрипторы, вы можете заметить, как будто необычное поведение в определенных случаях использования оператор
равен
, как и те, которые включают сравнения между методами экземпляра, или константы. Проверьте их документация для получения дополнительной информации.
>>> class C:
... def m():
... pass
...
>>> C.m is C.m
False
Я искал дополнительные объяснения, но не смог их найти.
Почему Cm is Cm
ложно?
Я использую Python 2.x. Как отмечено в ответах ниже, в Python 3.x Cm is Cm
верно.