python - 在 Python 中,这个表达式“(a is b) == ( id(a) == id(b) )” 总是返回 True 吗?
问题描述
在 Python 中,表达式(a is b) == ( id(a) == id(b) )
似乎总是返回 True,其中a
和b
是引用某个对象的变量,因为该id
函数返回存储它们的内存并is
用于对象标识。
有什么例外吗?
解决方案
(a is b) == ( id(a) == id(b) )
这个表达式总是True
。有两种可能的方式: 1. 两者都a
引用b
同一个对象
>>>a='Hello'
>>>b=a
>>> a is b
True
>>> id(a)==id(b)
True
- '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
和测试:当且仅当x和y是同一个对象时, x 是 y为真。使用该函数确定对象的身份。x is not y产生逆真值。is not
id()
推荐阅读
- c++ - 生成 normal_distribution 时 std::random 中的错误?
- rust - 为什么初始化向量的向量(Vec
>) 期望 T 而不是 Vec ? - c# - 在运行时从文件创建具有纹理的材质
- c# - 我可以将 Visual Studio 设置为卸载所有项目,而不是选择 1 个项目并仅递归加载其依赖项吗?
- python - 如何改回ASCII码
- java - 在运行时加载编译的类
- android - 权限被拒绝从画廊 Android 读取
- python - 根据 Google Cloud Bigtable 中的唯一 ID 选择 JSON 对象
- java - 当我覆盖变量时,我需要关闭阅读器还是垃圾收集器会关闭它?
- python - Linux下将Windows字符串转换为numpy时的fromstring()