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

我在命令行中输入:

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类型不存在此类情况
不明白为什么


富国沪深
浏览 649回答 1
1回答

慕妹3146593

1.首先关于 is ,如楼上所说的,is 判断两个变量是否指向内存的同一区域,也即变量的 id 是否相同。2.题主需要了解一下 小整数对象池 的概念。因为一般情况下,程序中小整数 [-5, 256] 的使用是比较频繁的,python 为了优化速度,建立了 小整数对象池,也就是说这些小整数在内存中是唯一的。因此:a = 1b = 1a is b  # Truea, b 都是小整数,其对应相同的内存,也就是说变量的id是相同的,所以 a is b 返回 True。而对于浮点数,每建立一个新的变量就开辟一块内存,所以 a = 1.1 和 b = 1.1 指向的内存地址是不同的,因此 a is b返回 False 。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python