我正在尝试下一个代码:
x = 'asd'
y = 'asd'
z = input() #write here string 'asd'. For Python 2.x use raw_input()
x == y # True.
x is y # True.
x == z # True.
x is z # False.
为什么我们在最后一个表达式中有假?
is
检查身份。a is b
是True
iffa
并且b
是同一对象(它们都存储在相同的内存地址中)。
==
支票平等,这通常是由魔术方法定义__eq__
-即a == b
是True
如果a.__eq__(b)
是True
。
具体来说,Python将两个硬编码的字符串优化为同一个对象(由于字符串是不可变的,因此没有危险)。由于input()
将在运行时创建字符串,因此无法进行优化,因此将创建一个新的字符串对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句