找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1943|回复: 2

[求助] 新人求助,关于Python对象

1

主题

1

帖子

1

积分

贫民

积分
1
mimrey 发表于 2018-1-3 16:23:12 | 显示全部楼层 |阅读模式
TIM截图20180103154955.png
哪位大佬可以帮我解释一下三段代码的运行结果
python的整型在什么情况下才算是相同对象


回复

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2018-1-4 08:43:04 | 显示全部楼层
可以这样理解:
1、闭区间[-4, 256]的python的整数缓存,计算结果在其中的id都是一致的
例如256 is (255 + 1)是True, -4 is (100-104) 也是True
2、不在上面区间的数,在同一个作用域内定义的整数,id相同,例如 1235 is 1235
非同一作用域例如def a(): return 1235    1235 is a()是False
3、经过表达式计算的id不同, 上面的1235 is a()也可以理解为经过表达式a()计算
(1234 + 1) is (1234 + 1) 是False
回复 支持 反对

使用道具 举报

0

主题

7

帖子

7

积分

贫民

积分
7
Un1imited 发表于 2018-1-4 08:46:47 | 显示全部楼层
1和3可以解释,是因为is比较的是对象的内存地址,在python中[-5,256]这个区间的数被认为是常用数,内部分配了固定的内存地址,使用时直接在里面取,不会再分配其他内存地址,所以3显示为True而1为False。至于2的情况,我这边跑出来和你不一样啊。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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