注:本文不区分作为编程语言的Python和作为语言实现的Python。后者均默认为CPython。
了解他人对Python源代码的掌握情况,我喜欢问这样一个问题
请问,在Python中,256和257的主要区别是什么?
我期望的回答是
Python内部,对这两个数采取了不同的对象创建策略
1.做一个实验
我们知道,在一个对象的生存期内,可以用id()函数得到这个对象的唯一标识。即,id返回值相同的对象一定是同一个对象。
启动Python的交互模式(主流版本的Python 2和Python 3均可),输入以下语句并观察结果。
>>> a = 0
>>> b = 0
>>> id(a) == id(b)
True
>>> a = -5
>>> b = -5
>>> id(a) == id(b)
True
>>> a = -6
>>> b = -6
>>> id(a) == id(b)
False
>>> a = 256
>>> b = 256
>>> id(a) == id(b)
True
>>> a = 257
>>> b = 25