扫码关注官方订阅号
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。
True
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
因为string pooling (或叫intern)。 is相等代表两个对象的id相同(从底层来看的话,可以看作引用同一块内存区域)。 至于为什么"ABC"被intern了而"a bc"没有,这是python解析器实现决定的,可能会变。
这只能说明字符串没有进常量池。毕竟python不经过编译,字符串不进常量池也是可能的。
但是在我的机器上是
True
。