當我閱讀「學習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時間來分配額外的內存。 –