运行解释器
>>> x = 5000
>>> y = 5000
>>> print(x is y)
>>> False
使用python test.py
在代码中运行相同内容会返回True
哎呀?
答案 0 :(得分:1)
当两个操作数引用完全相同的对象时,is
运算符仅返回True
。解释器是选择创建新值还是重用现有值是实现细节。 CPython(最常用的实现)显然很高兴有几个不同的整数对象将比较相等但不相同。
同样,就内存分配和值创建而言,无法保证解释器的行为是相同的。在交互式运行时,在连续语句的执行之间发生了很多事情。非交互式运行没有那些东西(将表达式的值绑定到_
变量,打印出值后跟提示等)需要发生,因此对于解释器来说更容易重新使用刚创造的价值。
答案 1 :(得分:1)
Python在开始时分配了一些数字。
for x,y in zip(range(256,258),range(256,258)):
print(x is y)
x=y=5000
print(x is y)
这将在我的机器上打印:
True
False
True
第一个打印是True,因为它在分配的范围内,x和y都指的是相同的数字。 False表示x和y都将创建一个整数对象,它们将不相同。最后一个是True,因为我特意告诉Python使x和y成为同一个对象。
如果要检查相等性,请使用==
代替is
。