【发布时间】:2019-02-15 12:15:57
【问题描述】:
我可以在多大程度上依赖对象的id() 及其在实践中的独特性?例如:
-
id(a) == id(b)是指a is b还是反之亦然?相反的呢? - 将
id保存在某个地方以供以后使用(例如,保存到某个注册表而不是对象本身)有多安全?
(作为对Canonicals for Python: are objects with the same id() the same object, `is` operator, unbound method objects的回应而写成建议的规范)
【问题讨论】:
-
(something is something) == (id(something) is id(something))返回True -
@U9-Forward 不一定,如果评估
something每次都返回一个新对象。这就是造成混乱的全部原因。 -
是的,没错
-
这非常需要实际的例子:1)一些未命名的表达式,例如
(t+t), (t+2)2) 一些绑定和未绑定的方法对象:a.method1,a.method2,b.method1... 3) 字符串表达式,例如s = "food"s1 = s[0:3]s2 = s[0:3]。否则它将完全超出新用户的头脑。他们甚至不理解这些术语以及它们与代码的关系。 -
@smci 好的,我终于可以想出一些说明性的例子,这些例子不会在混合中添加不相关的概念。
标签: python identity identity-operator