首页 > 解决方案 > 在 Python 中,这个表达式“(a is b) == ( id(a) == id(b) )” 总是返回 True 吗?

问题描述

在 Python 中,表达式(a is b) == ( id(a) == id(b) )似乎总是返回 True,其中ab是引用某个对象的变量,因为该id函数返回存储它们的内存并is用于对象标识。

有什么例外吗?

标签: pythonpython-3.xobjectobject-identity

解决方案


(a is b) == ( id(a) == id(b) )

这个表达式总是True。有两种可能的方式: 1. 两者都a引用b同一个对象

>>>a='Hello'
>>>b=a
>>> a is b
True
>>> id(a)==id(b)
True
  1. 'a' 和 'b' 都指代不同的对象。
>>>a='hello'
>>>b='world'
>>>a is b
False
>>>id(a)==id(b)
False

id(a)==id(b)做什么a is b

现在, Incase1(a is b) == ( id(a) == id(b) )这是True==True返回True. 在第二种情况下,(a is b) == ( id(a) == id(b) )这是False==False返回True

文档

对象身份的运算符is和测试:当且仅当xy是同一个对象时, x 是 y为真。使用该函数确定对象的身份。x is not y产生逆真值。is notid()


推荐阅读