Возможный дубликат:
Python '==' и 'is' при сравнении строк, 'is' иногда не работает, почему?
Я собираюсь пропустить часть, где я рассказываю вам, как я тестировал свой код, и сразу перейду к проблеме.
У Python, похоже, возникли проблемы с сопоставлением разделения строки Unicode с другой встроенной строкой Unicode в операторе if.
>>>zone = u'domain.com.'
>>>zone[-1:]
u'.'
>>>u'.' is u'.' #works fine
True
>>> z[-1:] == u'.' #works fine
True
>>> zone[-1:] is u'.' # FAILS !
False
вот мой фактический фрагмент кода
>>>if zone[-1:] is not u'.':
>>> #this line will always run !
если я изменю «не» на != код работает нормально!
Кто-нибудь знает, почему "есть" привело к сбою сравнения?
is
сравнивает тождество, а не равенство. - person Fred Larson   schedule 07.06.2011