您好,登錄后才能下訂單哦!
本篇內容介紹了“python字符串駐留是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
先看下面這段代碼
>>> a = 'apple'
>>> b = 'apple'
>>> a is b
True
返回結果看起來沒毛病
再來看這段:
>>> a = 'apple!'
>>> b = 'apple!'
>>> a is b
False
這個結果是不是有點詭異
前后兩個字符串僅僅是一字之差,結果完全不同。
不信你可以自己測試一下
為了理解這段代碼的區別,里面涉及到一個概念,叫做“字符串駐留”,英文叫string intern。
python中萬物皆對象,某些情況下,解釋器遇到兩個看起來長的一毛一樣的對象時會做一些優化
例如上面例子中的第一段代碼,a 和 b 的值都是 apple
,當解釋器準備創建第二個字符串”apple”時,解釋器會去駐留內存中查找是否已經存在“apple”對象,如果有就不在創建新的對象了,兩人共享一個老婆,哦不對,是共享一個對象。
這就是字符串駐留的概念。
所以 a 和 b 這兩個變量共享了同一個對象,因此 is
運算后返回結果為 True
。
對于簡單的字符串,系統中可能大量重復存在,這樣的好處就是節省內存。駐留內存這個策略在java中也存在。
但并不是所有的字符串有會放進駐留內存中,如果都駐留的話,內存會爆炸。只有符合如下規則才有可能被駐留
長度為 0 或者 1 的字符串被駐留.
字符串中只包含字母,數字或下劃線時將會駐留。
字符串必須是編譯時的常量字符串
例如下面的c用join方法生成的字符串就不會駐留
>>> a = "apple"
>>> c = "".join(['a','p','p','l','e'])
>>> a is c
False
“python字符串駐留是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。