python is操作的疑问
天蓬老师
天蓬老师 2017-04-17 11:41:48
[Python讨论组]

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吗?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(2)
大家讲道理

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

伊谢尔伦

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

但是在我的机器上是True

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号