Python对象优化

时间:2018-10-09 12:11:27

标签: python object memory

我发现了有关python的一件有趣的事情,希望有人能解释一下。因此,在进行项目工作时,我遇到了一个字符串与另一个字符串不相等的情况,这导致了我的代码中的错误。

为了说明这一点,让我们初始化两个int类型的变量:

a, b = 1, 1

然后,让我们进行比较:

a == b # True
a is b # True

我们正在将它们的值与'=='运算符进行比较,但如果与'is'运算符进行相同的操作,则将获得相同的结果。 让我们对字符串做同样的事情:

s1, s2 = 'Hello', 'Hello'
s1 == s2 # True
s1 is s2 # True

但是您不确定后者。根据文档,“ is”运算符正在比较内存中对象的实例,我们可以使用“ id()”函数对其进行检查:

id(s1) # 4442608224
id(s2) # 4442608224

我理解正确吗,我们有s1和s2,它们是内存中指向同一对象的指针吗?这是第一个问题... 还记得我以整数开始这个问题吗?让我们一起玩吧:

a, b = 1, 1
a is b # True
id(a) # 4434738176
id(b) # 4434738176
a -= 1
id(a) # 4434738144
a += 1
id(a) # 4434738176
a is b # True

所以,现在我们有了a和b,它们是内存中指向同一对象的指针,这是一个值为1的整数。

Python,让我惊讶...

有什么建议吗?

0 个答案:

没有答案