首頁 > 後端開發 > Python教學 > 字串連接似乎如何改變 Python 中的不可變字串?

字串連接似乎如何改變 Python 中的不可變字串?

Barbara Streisand
發布: 2024-10-29 20:22:30
原創
665 人瀏覽過

How Can String Concatenation Seem to Mutate Immutable Strings in Python?

Python 字串:不可變實體和賦值混亂

Python 以其字串的不變性而自豪,這意味著字串值一旦建立就無法更改。然而,在嘗試字串串聯時遇到的令人困惑的行為引發了關於這種不變性的問題。

謎題:透過串聯改變不可變字串?

考慮以下程式碼片段:

<code class="python">a = "Dog"
b = "eats"
c = "treats"

print(a, b, c)  # Dog eats treats

print(a + " " + b + " " + c)  # Dog eats treats

print(a)  # Dog

a = a + " " + b + " " + c
print(a)  # Dog eats treats  # Surprise!</code>
登入後複製

程式碼最初初始化三個字串,然後用空格將它們連接起來。令我們驚訝的是,a 的值在重新分配給連接結果後發生了變化。

揭秘:變數重新分配,而不是字串突變

理解這種行為的關鍵在於認識到Python 字串確實是不可變的,而它們的引用是可變的。當我們在最後一行重新分配 a 時,我們並沒有修改現有的字串「Dog」。相反,我們創建一個新字串“Dog eats treats”並將其引用分配給 a。

不變的真理仍然存在

本質上,字串變數儲存字串值的位址(或引用),而不是值本身。我們可以將變數重新指派給不同的位址,但這些位址處的字串值保持不變。

因此,雖然看起來好像我們正在透過連接修改字串,但我們只是創建新字串並重新分配引用。字串的不變性保持不變。

以上是字串連接似乎如何改變 Python 中的不可變字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板