当我阅读“学习Python”时,我对使用is
运算符感到困惑。是Python中的关键字
本书试图将其解释为对同一存储器地址(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:字符串在内存中存在什么样的格式?
Python尽量避免在可能和实际的情况下创建新的字符串对象。字符串是不可变的,所以相同的*值*可能是同一个对象,节省内存和CPU时间来分配额外的内存。 –