为了账号安全,请及时绑定邮箱和手机立即绑定

为什么CPython int是唯一的,而长期没有呢?

为什么CPython int是唯一的,而长期没有呢?

繁花不似锦 2021-03-08 12:13:48
使用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


查看完整回答
反对 回复 2021-03-31
?
holdtom

TA贡献1805条经验 获得超10个赞

为什么两者之间的行为有所不同?

这是因为只有一些int真正被拘禁了。并不是所有的价值观都可以做到的。

我是否正确地将此行为推广到所有int和所有long?

如果是int,则不会。有些被拘留,有些则没有。

AFAICT,对于longs,您可能是正确的,但我不确定。我用两个4Ls进行了测试,但它们并不相同。

这是CPython特有的吗?

是的。在语言规范中未指定它,因此此行为可能(并将)在其他实现上有所不同。


查看完整回答
反对 回复 2021-03-31
  • 3 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信