是比较返回False与使用相同ID的字符串

时间:2016-10-01 13:10:38

标签: python string comparison

我正在玩Python is==运算符。据我所知,运算符是否检查两个对象是否具有相同的id,但在我的情况下,即使两个子串具有相同的id,运算符也会返回False。

以下是代码:

#! /usr/bin/python3
# coding=utf-8
string = "HelloWorld"

print(id(string))    #140131089280176
print(id(string[0:5]))  #140131089251048
print(id(string[-10:-5]))   #140131089251048


print(string[0:5] == string[-10:-5])    #True
print(string[0:5] is string[-10:-5])    #False

子字符串与原始字符串的id没有预期的相同,但为什么运算符返回false,其中2个子字符串具有相同的id?

1 个答案:

答案 0 :(得分:0)

对我而言:

print(id(string[0:5]))
print(id(string[-10:-5]))  

有不同的ID,因此,这些答案:

print(string[0:5] == string[-10:-5])    #True
print(string[0:5] is string[-10:-5])    #False

是应该期待的。

你确定你在这里没有弄错吗?

#我会将其作为评论发布,但还不能