玩蛇网提供最新Python编程技术信息以及Python资源下载!

python is引用对象返回结果为何不同

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

a = "a bc"
b = "a bc"
a is b # False
a = b
a 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

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd20078.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月19日 - 15时04分34秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules