当我阅读“学习Python”时,我对使用is
操作员。
本书试图将其解释为对相同内存地址的测试(A is B
, if True
,意味着 A 和 B 位于相同的内存地址中),但在下面的情况下,这个解释似乎不成立。谁能帮我理解这个功能?
s2='ufysdjkhflakjhsdjkfhasdhfoqwhefuhalskdjfhwuioehfjkasdhfljahsdjwade'
s1='ufysdjkhflakjhsdjkfhasdhfoqwhefuhalskdjfhwuioehfjkasdhfljahsdjwade'
s1==s2,s1 is s2
(True, True)
s1='flashmanfdsafsdfasdfsdffgj;djg;alkjdfgl;kajdfl;gjkla;dfjg;lakdfj;'
s2='flashmanfdsafsdfasdfsdffgj;djg;alkjdfgl;kajdfl;gjkla;dfjg;lakdfj;'
s1==s2,s1 is s2
(True, False)
s2='ufysdjkhflakjhsdjkfhasdhfoqwhefuhalskdjfhwuioehfjkasdhfljahsdjwade'
s1='ufysdjkhflakjhsdjkfhasdhfoqwhefuhalskdjfhwuioehfjkasdhfljahsdjwade'
s1==s2,s1 is s2
(True, True)
s1=';;'
s2=';;'
s1==s2,s1 is s2
(True, False)
PS:字符串在内存中以什么样的格式存在?
这是 CPython(标准 Python 解释器)的实现细节,它将为某些不可变类型(例如字符串和整数)重用内存中的相同数据。您不能依赖这种行为,因此您应该始终使用==
来比较这些类型。
如需更深入的答案,请参阅https://stackoverflow.com/a/15541556/1544347
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)