Chinaunix首页 | 论坛 | 博客
  • 博客访问: 579644
  • 博文数量: 84
  • 博客积分: 1529
  • 博客等级: 上尉
  • 技术积分: 1482
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-27 17:57
文章分类

全部博文(84)

文章存档

2014年(7)

2013年(9)

2012年(20)

2011年(48)

分类: Python/Ruby

2012-01-04 16:40:18

今天在看Python核心编程的时候,第四章讲到了对象身份的比较,例子:
  1. In [77]: a = 4.5

  2. In [78]: id(a)
  3. Out[78]: 61405448

  4. In [79]: b = 4.0 + 0.5

  5. In [80]: id (b)
  6. Out[80]: 61772472
可以发现两者的id是不同的,则说明两者是内存地址是不一样的,也就说明两者的对象身份是不同的。
 
但是:
  1. In [88]: a = 4

  2. In [89]: id(a)
  3. Out[89]: 54900576

  4. In [90]: b = 3 + 1

  5. In [91]: id(b)
  6. Out[91]: 54900576
此种例子两者的id确实一样也就是对象身份是一样的。
 
觉得疑惑就google搜索:
原来python对这种整数对象和字符串对象会进行缓存,所以在创建新的对象时是没有进行创建的。
但是对于整数缓存的范围是有限制的,我用的Python版本是2.7版本,范围是[0,257)之间。不同的版本不范围是不一样的
对于字符串还没有发现有限制,但也不清楚是否有限制
 
这是网上一哥们对于int、string的实现的分析:
阅读(1615) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~