我正在使用Python进行变量初始化的实验,遇到一种情况,即在一定范围内的id(整数)相同且id(整数)大于256,Python创建了一个新引用。
例如:
>>>> a = 2
>>>> b = 2
>>>> id(a) == id(b)
True
>>>> a = 257
>>>> b = 257
>>>> id(a) == id(b)
False
通读文档,很明显Python在初始化期间会缓存小的整数值。
https://hg.python.org/cpython/file/tip/Objects/longobject.c#l5343
为什么Python在初始化期间内部仅缓存[-5,257)范围内的整数值?
此外,python共享带字符串的引用,字符串不带空格和特殊字符。
所以,我有几个问题:
例如:
>>> a = "csjhdfsdkbvfbvkfdbkfdbkfjdbvfdbjhdvkdbvkdbfsgvxcxc"
>>> b = "csjhdfsdkbvfbvkfdbkfdbkfjdbvfdbjhdvkdbvkdbfsgvxcxc"
>>> id(a) == id(b)
True
>>> a = "csjhdfsdkbvfbvkfdbkfdbkfjdbvfdbjhdvkdbvkdb@"
>>> b = "csjhdfsdkbvfbvkfdbkfdbkfjdbvfdbjhdvkdbvkdb@"
>>> id(a) == id(b)
False