3
我正在玩Python is
和==
运算符。据我所知,是否运算符检查两个对象是否具有相同的id,但在我的情况下,即使两个子字符串具有相同的id,运算符也会返回False。是比较返回False与使用相同的ID的字符串
下面是代码:
#! /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,但为什么是运营商返回与2子假用相同的ID?
我猜Python是重复使用相同的插槽在内存上的第一个例子,其中当一次创建两个切片它不能做(或者如果你分配它们,那么它们不会立即被解除引用)。 – jonrsharpe