python is引用对象返回结果为何不同,pythonis引用对象,is关键字用于比较对象引


is关键字用于比较对象引用,于是我做了如下操作示例:

a = "a bc"b = "a bc"a is b # Falsea = ba is b # True a="ABC"b="ABC"a is b # True

为什么两次is返回的是不同结果?不是应该都是true吗?

因为string pooling (或叫intern)。is相等代表两个对象的id相同(从底层来看的话,可以看作引用同一块内存区域)。至于为什么"ABC"被intern了而"a bc"没有,这是python解析器实现决定的,可能会变。

这只能说明字符串没有进常量池。毕竟python不经过编译,字符串不进常量池也是可能的。

但是在我的机器上是True。

编橙之家文章,

评论关闭