免费注册 查看新帖 |

Chinaunix

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

对象比较的输出结果不一致,有谁知道原因? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-22 12:05 |只看该作者 |倒序浏览
本人新手,学习python中,碰到一问题,请教下大伙。
代码如下:
a=10.0
b=10.0
print a is b

如果使用IDLE的话,输出结果是false;
如果使用pydev(eclipse)的话,输出结果是true;

问题来了,为什么会得出两种不同的结果?

我本人认为false才是正确的结果。

论坛徽章:
0
2 [报告]
发表于 2010-05-22 12:20 |只看该作者
确实应该是 false 啊,因为 Python 应该只缓存一部分的整形才对……可能是 pydev 把它们当整形处理了,或者缓存了一部分特殊的浮点型?不确定……不过研究这个没啥意义吧…… is 关键字好像很少用在整形、浮点型上……

论坛徽章:
0
3 [报告]
发表于 2010-05-22 12:21 |只看该作者
pirnt id(a),id(b) 看看不就行了。

论坛徽章:
0
4 [报告]
发表于 2010-05-22 12:22 |只看该作者
额 的确是这样啊
IDLE的结果是正确的
pydev的结果是错误的

论坛徽章:
0
5 [报告]
发表于 2010-05-22 12:25 |只看该作者
本帖最后由 luffy.deng 于 2010-05-22 12:28 编辑

跟idle  还是pydev 没有关系,无论是用idle 还是pydev建个文件内容如下
a=10.0
b=10.0
print id(a),id(b)
print a is b
运行该文件你得到true

在解释器里
>>>a=10.0
>>>b=10.0
>>>print id(a),id(b)
>>>print a is b
你会得到false

论坛徽章:
0
6 [报告]
发表于 2010-05-22 12:29 |只看该作者
跟idle  还是pydev 没有关系,无论是用idle 还是pydev建个文件内容如下
a=10.0
b=10.0
print id(a),id(b ...
luffy.deng 发表于 2010-05-22 12:25



    果然如此啊,能解释一下为什么么?

论坛徽章:
0
7 [报告]
发表于 2010-05-22 12:34 |只看该作者
a is b 等价于 id(a) == id(b)
感觉还是和解释器本身有关。

论坛徽章:
0
8 [报告]
发表于 2010-05-22 12:35 |只看该作者
a is b 等价于 id(a) == id(b)
感觉还是和解释器本身有关。

论坛徽章:
0
9 [报告]
发表于 2010-05-22 12:38 |只看该作者
a is b 等价于 id(a) == id(b)
感觉还是和解释器本身有关。

论坛徽章:
0
10 [报告]
发表于 2010-05-22 12:39 |只看该作者
a is b 等价于 id(a) == id(b)
感觉还是和解释器本身有关。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP