当我读到“学习Python”时,我对使用is
运算符感到困惑。在
本书试图将其解释为对相同内存地址的测试(A is B
,如果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解释器)的实现细节,CPython将在内存中为某些不可变类型(如字符串和整数)重用相同的数据。您不能依赖这种行为,因此应该始终使用
==
来比较此类类型。在有关更深入的答案,请参见https://stackoverflow.com/a/15541556/1544347
比较参考文献,“==”是“eq”方法的语法糖。在
所以当你用“==”进行测试时,两个字符串的值必须等于真。 如果使用“is”进行测试,则对象的引用必须相同。在
相关问题 更多 >
编程相关推荐