python單變數賦值,字串賦值的變與不變

2021-07-10 03:18:35 字數 734 閱讀 5129

之前寫過一篇關於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...