0

我有以下 python 代码进行字符串比较:

>>> mf="moo foo"

>>> mf[0:3]
'moo'

>>> mf[0:3] is "moo"
False

>>> mf[0:3] == "moo"
True

>>> str(mf[0:3]) is "moo"
False

所以双等号运算符返回true,但pythonis运算符返回false。这一定是因为它们不是同一个对象。

获得的字符序列与同一字符串str[n:m]的文字表示 ( )之间的技术区别是什么?'moofoo'为什么它们不是同一个对象?

4

1 回答 1

5

is测试是否相等以及相同的对象 ID(在 CPython 中,这是对象在内存中的地址)。str(...)切片创建一个浅拷贝,因此is测试失败。

==测试相等的值。is测试对象身份。

引用自Python 的邮件列表

'is' 允许我们区分系统是否正在跟踪两个看起来相似或实际上相同的事物。

于 2013-07-25T05:14:30.537 回答