免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3557 | 回复: 10
打印 上一主题 下一主题

难道是 python 的bug,判断 is 竟然不一致 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-02 08:37 |只看该作者 |倒序浏览
难道是 python 的bug,判断 is 竟然不一致
用代码说话:
  1. >>> a=256
  2. >>> b=256
  3. >>> a is b
  4. True
  5. >>> a=257
  6. >>> b=257
  7. >>> a is b
  8. False
  9. >>>
复制代码

论坛徽章:
0
2 [报告]
发表于 2012-08-02 09:14 |只看该作者
不明白为什么,求大牛解释

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
3 [报告]
发表于 2012-08-02 09:58 |只看该作者
貌似 is 判断是不是同一个对象吧

论坛徽章:
0
4 [报告]
发表于 2012-08-02 10:04 |只看该作者
回复 1# go_hao
257已经超出python定义的小整数池的范围,所以是false,正数1---256之间会得到true.

   

论坛徽章:
0
5 [报告]
发表于 2012-08-02 11:33 |只看该作者
很好,学习了

论坛徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龙
日期:2014-08-08 09:28:02狮子座
日期:2014-09-14 20:32:05
6 [报告]
发表于 2012-08-02 13:55 |只看该作者
本帖最后由 ssfjhh 于 2012-08-02 14:00 编辑
106033177 发表于 2012-08-02 10:04
回复 1# go_hao
257已经超出python定义的小整数池的范围,所以是false,正数1---256之间会得到true.


请教,我还没有完全理解,正如3楼所言,is是用来判断是否为同一个对象,是否为同一个对象跟小整数池有什么关系?
  1. >>> a = b = 257
  2. >>> a is b
  3. True
  4. >>>
复制代码

论坛徽章:
0
7 [报告]
发表于 2012-08-02 22:42 |只看该作者
使用 id(a) id(b) 就知道了. 小于257 a,b的值相同所以true.
详细解释自己去搜索吧. 机制的关系!

a=b=257时, a与b是同一个引用, id值相同,所以true

论坛徽章:
0
8 [报告]
发表于 2012-08-02 22:50 |只看该作者
ssfjhh 发表于 2012-08-02 13:55
请教,我还没有完全理解,正如3楼所言,is是用来判断是否为同一个对象,是否为同一个对象跟小整数池有什 ...



对吖。。。我也有这个问题。。为什么呢?他们不是同一个对象吖。。。。而且赋值为字符串也是true噢。。。
难道也是只有元组和列表才是容易判断不是同一对象的?

论坛徽章:
0
9 [报告]
发表于 2012-08-03 08:22 |只看该作者
小整数池里的数都是常用的值(你也可以自己改参数设范围,默认这里是到256),python提供这个就是为了避免程序不断的申请释放小整数,进而影响性能,这些你可以参考python源码颇析,里面都有这些。

论坛徽章:
0
10 [报告]
发表于 2012-08-03 08:28 |只看该作者
a=257
b=257
这两个257不是统一个对象,因为他们不是python自己控制的整数池数据范围。
python自己控制的小整数池里的对象,始终只有一个,不用申请释放
a=10
b=10
这两个10是整数池里的10,而这个10对象只存在一个
所以。。。。
说白了,整数池里的对象随着python进程存在而存在,跟你跑得程序无关。如果你要用它范围里的值,他提供,而不用重新分配空间建立对象。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP