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

Python 中的 is 到底是怎么判断的? 求大牛解答

Python 中的 is 到底是怎么判断的? 求大牛解答

富国沪深 2019-01-05 18:18:26
我在命令行中输入:a, b = 1, 1 a is b    # Truea, b = 1.1, 1.1 a is b    # True但是这样:a = 1.1 b = 1.1 a is b    # False  想不明白int:a = 1 b = 1 a is b:   # True这样: a = 1.1 b = a a is b:   True当为 a 和 b 单独赋值时,如果值为浮点型 使用 is 比较两个值就是 False int类型不存在此类情况不明白为什么
查看完整描述

1 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

1.首先关于 is ,如楼上所说的,is 判断两个变量是否指向内存的同一区域,也即变量的 id 是否相同。

2.题主需要了解一下 小整数对象池 的概念。因为一般情况下,程序中小整数 [-5, 256] 的使用是比较频繁的,python 为了优化速度,建立了 小整数对象池,也就是说这些小整数在内存中是唯一的。因此:

a = 1b = 1a is b  # True

a, b 都是小整数,其对应相同的内存,也就是说变量的id是相同的,所以 a is b 返回 True
而对于浮点数,每建立一个新的变量就开辟一块内存,所以 a = 1.1 和 b = 1.1 指向的内存地址是不同的,因此 a is b返回 False 。


查看完整回答
反对 回复 2019-01-05
  • 1 回答
  • 0 关注
  • 648 浏览
慕课专栏
更多

添加回答

举报

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