之前寫過一篇關於python裡列表物件的』=』的乙個陷阱,
今天乙個初學python的同學跟我討論問題的時候,我們把這個問題擴充套件了一下。
>>> a=[2]
>>> b=a
>>> b
[2, 3]
那麼,對於單個變數來說,還是這樣嗎?事實上不是了,如下:
>>> a=2
>>> b=a
>>> a=3
>>> b
2
為什麼會不一樣呢?不是python裡的賦值就是記憶體裡乙個物件的位址的傳遞嗎。
事實上,在上面第三部的時候,
a=3 已經產生了乙個新的物件,即3被分配給了乙個新的位址,這個位址又被傳遞給了a變數,而之前的位址儲存的2還存留在b的變數下面,所以b並沒有改變。
同樣的,對於字串呢?我想到,字串事實上不就是列表嗎,所以應該也是跟列表一樣的情況,實驗結果又打臉了:
b='dddd'
>>> a=b
>>> b=b+'111'
>>> b
'dddd111'
>>> a
'dddd'
沒變啊!這又是為什麼。
想了一下想起這句話,python裡的字串是不可變的。
這意味著 『dddddd』+』111』跟單個數字一樣,產生了乙個新的物件。
所以會出現這樣的結果啦。
python字串賦值列表 python字串賦值
在python中字串是不可改變的物件 immutable 因此無法直接修改字串的某一位字元。一種可行的方式,是將字串轉換為列表,修改列表的元素後,在重新連線為字串。示例 如下 s abcdefghijk 原字串l list s 將字串轉換 python如何把輸出的字串賦值給變數 python 字串 ...
python變數和字串
idle 變數名就像我們現實社會的名字,把乙個值賦值給乙個名字時,ta會儲存在記憶體中,稱之為變數 variable 在大多數語言中,都把這種行為稱為 給變數賦值 或 把值儲存在變數中 不過python與大多數其他計算機語言的做法稍有不同,ta並不是把值儲存在變數中,而更像是把名字貼在值的上邊。所以...
Python基礎(字串 變數)
s i love lixiaojing print s i love lixiaojing 如果想表示出let s go來 如果想表示 1.可以使用巢狀引號,即外層使用雙引號 2.轉義字元 s let s go print s ss let s go print ss sss c user prin...