栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

对带有字符串的`is`运算符感到困惑

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

对带有字符串的`is`运算符感到困惑

我相信这与字符串实习有关。从本质上讲,其思想是仅存储每个不同字符串的单个副本,以提高某些操作的性能。

基本上,

a isb
起作用的原因是(正如您可能已经猜到的)在这两种情况下,Python都引用了一个不变的字符串。当字符串很大(很可能还有其他一些我不理解的因素)时,则不会这样做,这就是第二个示例返回False的原因。

编辑:事实上,奇怪的行为似乎是交互式环境的副作用。如果你把你相同的代码,并把它变成一个Python脚本,都

a is b
ktr isptr
返回True。

a="poi"b="poi"print a is b  # Prints 'True'ktr = "today is a fine day"ptr = "today is a fine day"print ktr is ptr  # Prints 'True'

这很有意义,因为Python很容易解析源文件并在其中查找重复的字符串文字。如果动态创建字符串,那么即使在脚本中,其行为也有所不同。

a="p" + "oi"b="po" + "i"print a is b  # Oddly enough, prints 'True'ktr = "today is" + " a fine day"ptr = "today is a f" + "ine day"print ktr is ptr  # Prints 'False'

至于为什么

a is b
仍然结果为True,也许分配的字符串足够小以保证可以快速搜索到内部集合,而另一个则不能?



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669201.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号