您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 运算符混淆

5b51 2022/1/14 8:22:23 python 字数 2178 阅读 529 来源 www.jb51.cc/python

运算符是比较两个对象的内存地址(如果它们相同),则返回true,否则返回false. 代码#1 >>a="poi" >>b="poi" a is b true 我创建了两个对象,其内容相同,但它们完全位于不同的内存地址上. 那么为什么运算符返回true?不应该返回虚假. 就像这段代码一样 >>ktr = "today is a fine day" >>ptr = "today is a fine

概述

>>a="poi"
>>b="poi"
a is b
true

我创建了两个对象,其内容相同,但它们完全位于不同的内存地址上.
那么为什么运算符返回true?不应该返回虚假.
就像这段代码一样

>>ktr = "today is a fine day"
>>ptr = "today is a fine day"
>>ktr is ptr
false

基本上,a是b工作的原因是因为(正如你可能已经猜到的)在两种情况下都有一个由Python引用的不可变字符串.当一个字符串很大(以及其他一些我不理解的因素时,很可能),这没有完成,这就是你的第二个例子返回False的原因.

编辑:事实上,奇怪的行为似乎是交互式环境的副作用.如果你使用相同的代码并将其放入Python脚本中,则a和b都是ptr和ptr返回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仍然是结果为True,或许分配的字符串足够小以保证快速搜索实习集合,而另一个不是?

总结

以上是编程之家为你收集整理的python – 运算符混淆全部内容,希望文章能够帮你解决python – 运算符混淆所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶