为什么a,b = 257,257; python中的id(a)== id(b)

时间:2016-11-22 03:10:00

标签: python python-2.7 python-3.x

这是关于Python缓存机制的一系列问题。

首先,我阅读Why (0-6) is -6 = False?以找到Python中的整数对象池,然后我尝试了其他一些案例并发现了我的理解现象

In : a = 257; b = 257; id(a) == id(b)
Out: False

In : a, b = 257, 257; id(a) == id(b)
Out: True

In : a, b = (1,), (1,); id(a) == id(b)
Out: False

正如所提到的那个问题的答案,257不在小整数的范围内,所以当你分配一个值为257的新变量时应该有一个新对象,但a,b = 257, 257显示{{1 }}。所以我假设这种赋值方法会在初始化期间为它们分配两个相同的ID,但第三种情况证明这种假设是错误的。

请问您解释为什么这种分配方式与非缓存整数(不在[-5,256]中)和元组有不同的行为?

0 个答案:

没有答案