找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3489|回复: 4

python缓存简单整型

5

主题

165

帖子

165

积分

版主

Rank: 7Rank: 7Rank: 7

积分
165

热心会员突出贡献优秀版主荣誉管理

mongo 发表于 2016-7-20 20:31:50 | 显示全部楼层 |阅读模式
之前在看python核心编程遇到这么个问题

In [32]: a = 1

In [33]: b = 1

In [34]: id(a)
Out[34]: 34208976

In [35]: id(b)
Out[35]: 34208976
a 和b的地址相同,即a和b指向了同一个对象,但是

In [36]: a = 300
In [37]: b = 300

In [38]: id(a)

Out[38]: 66147648

In [39]: id(b)
Out[39]: 66149116


这种情况 a和b的地址又不相等,即a和b指向了两个不同的对象,虽然这两个对象的值相等.
为什么会出现这种情况呢
因为整型对象和字符串对象是不可变对象,所以python会很高效的缓存它们,且python仅缓存简单整型
python2.3缓存简单整型的范围是(-1,100), 2.5缓存的范围至少是(-5,256),这个范围实惠改变的,所以请谨慎使用python的这个特性
回复

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2016-7-20 22:39:46 | 显示全部楼层
{:7_193:}
这个总结的非常棒, 还说清楚了python版本的区别, 但是这个代码真心太清晰啊
我来帮你格式化一下吧
第一段代码:
  1. >>> a = 1
  2. >>> b = 1
  3. >>> id(a)
  4. >>> 34208976
  5. >>>
  6. >>> id(b)
  7. >>> 34208976
复制代码


第二段代码:
  1. >>> a = 300
  2. >>> b = 300
  3. >>> id(a)
  4. >>> 66147648
  5. >>>
  6. >>> id(b)
  7. >>> 66149116
复制代码
回复 支持 反对

使用道具 举报

5

主题

165

帖子

165

积分

版主

Rank: 7Rank: 7Rank: 7

积分
165

热心会员突出贡献优秀版主荣誉管理

mongo  楼主| 发表于 2016-7-21 09:10:45 | 显示全部楼层
blueelwang 发表于 2016-7-20 22:39
这个总结的非常棒, 还说清楚了python版本的区别, 但是这个代码真心太清晰啊
我来帮你格式化一 ...

怎么弄代码,我没怎么发表过帖子
回复 支持 反对

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2016-7-21 20:09:49 | 显示全部楼层
mongo 发表于 2016-7-21 09:10
怎么弄代码,我没怎么发表过帖子

3DB349B2-C07B-499C-8F71-1A48BEB647BE.png

很简单啊, 看上图, 把代码贴到里面就行啦
回复 支持 反对

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
骑着驴的唐僧 发表于 2016-7-26 20:09:20 | 显示全部楼层
新手路过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表