代码点读机 / Python / is

is Python · 关键字

判断两个名字是不是指向同一个对象,像判断两个照片是不是同一个人,不看两个长得像不像,而是看身份证能否对得上。

怎么用

a is b

小例子

a = [1, 2, 3]
b = [1, 2, 3]
c = a

print(a == b)  # True,因为值相等(长得像)
print(a is b)  # False,因为不是同一个对象(两张身份证,不同的人)
print(a is c)  # True,因为 c 和 a 指向同一个对象(同一个人)

运行结果

这里 a 和 b 虽然内容一样,但它们是两个独立的列表,内存地址不同,所以 a is b 为 False。而 c = a 让 c 和 a 指向同一个列表,所以 a is c 为 True。

提醒:Python 对小的整数(-5 到 256)和某些字符串有缓存机制,所以有时 is 对它们可能返回 True,但这属于实现细节,不建议依赖 is 来判断值是否相等。值比较请用 ==,记住is 看身份,== 看长相

官方文档:https://docs.python.org/zh-cn/3/reference/expressions.html#is

在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← Python全部词条