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

使用Python2.7,如果我尝试比较两个数字的身份,我没有得到相同的结果int和long。


整型


>>> a = 5

>>> b = 5

>>> a is b

True


>>> a = 885763521873651287635187653182763581276358172635812763

>>> b = 885763521873651287635187653182763581276358172635812763

>>> a is b

False

我有几个相关的问题:

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

  • 我将这种行为推广到所有ints和所有longs是正确的吗?

  • 这是CPython特有的吗?


繁花不似锦
浏览 140回答 3
3回答

慕桂英3389331

int和之间没有区别long。CPython实习生小整数(从-5到256)>>> a = 257>>> b = 257>>> a is bFalse

holdtom

为什么两者之间的行为有所不同?这是因为只有一些int真正被拘禁了。并不是所有的价值观都可以做到的。我是否正确地将此行为推广到所有int和所有long?如果是int,则不会。有些被拘留,有些则没有。AFAICT,对于longs,您可能是正确的,但我不确定。我用两个4Ls进行了测试,但它们并不相同。这是CPython特有的吗?是的。在语言规范中未指定它,因此此行为可能(并将)在其他实现上有所不同。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python