【发布时间】:2017-02-09 22:42:29
【问题描述】:
我在玩 Python is 和 == 运算符。据我所知,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的子字符串?
【问题讨论】:
-
我猜 Python 在第一个示例中重用了内存中的同一个插槽,当你一次创建两个切片时它不能这样做(或者如果你分配了它们,所以它们不是立即取消引用)。
标签: python string comparison