今天在看Python核心编程的时候,第四章讲到了对象身份的比较,例子:
- In [77]: a = 4.5
- In [78]: id(a)
- Out[78]: 61405448
- In [79]: b = 4.0 + 0.5
- In [80]: id (b)
- Out[80]: 61772472
可以发现两者的id是不同的,则说明两者是内存地址是不一样的,也就说明两者的对象身份是不同的。
但是:
- In [88]: a = 4
- In [89]: id(a)
- Out[89]: 54900576
- In [90]: b = 3 + 1
- In [91]: id(b)
- Out[91]: 54900576
此种例子两者的id确实一样也就是对象身份是一样的。
觉得疑惑就google搜索:
原来python对这种整数对象和字符串对象会进行缓存,所以在创建新的对象时是没有进行创建的。
但是对于整数缓存的范围是有限制的,我用的Python版本是2.7版本,范围是[0,257)之间。不同的版本不范围是不一样的
对于字符串还没有发现有限制,但也不清楚是否有限制
这是网上一哥们对于int、string的实现的分析:
阅读(1615) | 评论(0) | 转发(0) |