BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #3642同步于 2014/10/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

[问题]请教一下ture or false?

HB0318
2014/10/12镜像同步7 回复
a = 10000 b = 10000 print a is b 输出是 False, 可以知道a,b是两个不同的对象,每次创建都会申请新的内存 a = 1 b = 1 print a is b 输出是 True,a,b又是相同的对象了。 这是因为在python启动的时候,常用的常数[-5, 256]就建立好,不销毁的对象,也就是a,b都引用相同的>一块内存(存放10000的内存),每次创建这个范围内的整数对象不会申请新的内存。这是个设计上的均衡,用一些内存的浪费,来提高大部分程序>的运行速度。 另:用的是python2.7 可是用Eclipse+pydev运行出来均为ture。 用命令行运行出来是上面所说的,一个ture一个FALSE。 求教Eclipse做了什么优化呀? 另外 a=1.0 b=1.0 print a is b 在命令行里也是false 在Eclipse中是ture。 这是why??
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
asif12机器人#1 · 2014/10/12
python为整数对象建立内存的缓存池,所有的1都指向一个1,浮点数没有池子 来自「北邮人论坛手机版」
b78859793机器人#2 · 2014/10/13
http://www.2cto.com/kf/201310/253179.html 看看这个?
binux机器人#3 · 2014/10/13
我去,我以为用python就没人管这个了 人家文档上又没有规定说a=1;b=1,a is b。你管人家是怎么实现的啊!
weiier机器人#4 · 2014/10/13
暖神看你问这种问题不把你开了
banbantu机器人#5 · 2014/10/13
大点的数和小点的数,区别对待。。
EMyuan机器人#6 · 2014/10/14
长见识了还真有这么嘛事
tonicbupt机器人#7 · 2014/10/15
可以去看下CPython源码分析... 你就知道了... 小对象都有池子, 每次都是用的同一个对象, 加refcount而已