为了账号安全,请及时绑定邮箱和手机立即绑定

'is'运算符与非缓存整数意外地运行

'is'运算符与非缓存整数意外地运行

开心每一天1111 2019-09-16 12:05:29
'is'运算符与非缓存整数意外地运行在玩Python解释器时,我偶然发现了关于is运算符的这个冲突的情况:如果评估发生在它返回的函数中True,如果它在外部完成则返回False。>>> def func():...     a = 1000...     b = 1000...     return a is b...>>> a = 1000>>> b = 1000>>> a is b, func()(False, True)由于is运营商评估id()的参与对象,这意味着a并b指向同一个int函数内声明的时候实例func,但是,相反,它们指向一个不同的对象时,它的外面。为什么会这样?注意:我知道identity(is)和equal(==)操作之间的区别,如了解Python的“is”操作符中所述。另外,我也知道python正在对范围内的整数执行缓存,[-5, 256]如“is”中所述,运算符与整数一起出现意外行为。 这不是这里的情况,因为数字超出了该范围,我确实想要评估身份而不是平等。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 656 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信