1

可能重复:
Python '==' vs 'is' 比较字符串,'is' 有时会失败,为什么?

我将跳过我告诉你我如何测试我的代码并直接跳到问题的部分。

Python 似乎在将 unicode 字符串拆分为 if 语句中的另一个内联 unicode 字符串时遇到了一些问题。

>>>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 !

如果我将“不是”更改为!= 代码工作正常!

有谁知道为什么“是”导致比较失败?

4

1 回答 1

2

这是因为字符串是 Python 中的对象 --- 当你对一个字符串进行切片时,你会创建一个新的。

它比这稍微复杂一些,但这就是它的要点。

解决方案:使用==and!=代替isand is not

于 2011-06-06T20:28:53.867 回答