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