使用Python2.7,如果我尝试比较两个数字的身份,我没有得到相同的结果int和long。整型>>> a = 5>>> b = 5>>> a is bTrue长>>> a = 885763521873651287635187653182763581276358172635812763>>> b = 885763521873651287635187653182763581276358172635812763>>> a is bFalse我有几个相关的问题:为什么两者之间的行为有所不同?我将这种行为推广到所有ints和所有longs是正确的吗?这是CPython特有的吗?
3 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
int和之间没有区别long。CPython实习生小整数(从-5到256)
>>> a = 257
>>> b = 257
>>> a is b
False
holdtom
TA贡献1805条经验 获得超10个赞
为什么两者之间的行为有所不同?
这是因为只有一些int真正被拘禁了。并不是所有的价值观都可以做到的。
我是否正确地将此行为推广到所有int和所有long?
如果是int
,则不会。有些被拘留,有些则没有。
AFAICT,对于long
s,您可能是正确的,但我不确定。我用两个4L
s进行了测试,但它们并不相同。
这是CPython特有的吗?
是的。在语言规范中未指定它,因此此行为可能(并将)在其他实现上有所不同。
添加回答
举报
0/150
提交
取消