Python 中的数据映射是什么规则?

2019 年 1 月 25 日
 ooleslie
example.1
input:
a = 3
b = a
id(a)
id(b)
id(3)

output:
id(a)=4531258544
id(b)=4531258544
id(3)=4531258544

example.2
input:
a = -1000
b = a
id(a)
id(b)
id(3)

output:
id(a)=4534237776
id(b)=4534237776
id(-1000)=4534237968

为什么?

主要想让大家推荐下,这块知识点应该看什么资料
3281 次点击
所在节点    Python
11 条回复
junnplus
2019 年 1 月 25 日
关键字 python 小整数对象池
参考: https://github.com/Junnplus/blog/issues/12
kkk330
2019 年 1 月 25 日
之前有人在 v 站问过类似的问题,可以先搜索下
ooleslie
2019 年 1 月 25 日
@kkk330 谢谢,我主要不知道该用什么关键字搜索,不过 1 楼提供啦
0xABCD
2019 年 1 月 25 日
Qzier
2019 年 1 月 25 日
python 会缓存小数字和短字符串。
Qzier
2019 年 1 月 25 日
看 cpython 源码即可
bruce00
2019 年 1 月 25 日
楼主看看流畅的 python 第八章呢,应该就是讲的这个
XxxxD
2019 年 1 月 25 日
>>> a = 258
>>> b = a
>>> id(a)
14014704
>>> id(b)
14014704
>>> id(258)
14014816
>>>
我还记得超 256 不行,缓存小数字
builtins
2019 年 1 月 25 日
缓存的小整数池是-5 到 256 整数,超出这个范围 id 就不会相等,除非 a=257;b=257
zepc007
2019 年 1 月 25 日
@builtins 牛批,每次这个都记不住
builtins
2019 年 1 月 25 日
强烈建议看一下 github 上的 wtfpython,长了见识

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/530431

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX