1. 程式人生 > 其它 >python中特殊的變數機制 python中的變數只包含資料物件的引用,並不包含該資料。

python中特殊的變數機制 python中的變數只包含資料物件的引用,並不包含該資料。

技術標籤:pythonpython

舉個例子,python中有一些不可變的資料型別,比如字串,元組…


str1='i love python'
str2=str1

print('str1:',str1)
print('str2:',str2)
str1=str1.upper()
print('str1:',str1)
print('str2:',str2)

上面的例子中,我們讓str1 str2 兩個變數指向了同一字串,我們只對str1進行了全大寫的操作,那麼str2會受到什麼影響呢?

輸出如下
在這裡插入圖片描述

可見str2並未收到影響。即原來的字串資料並未改變,因為str2還指向它

其中原因涉及到以下幾點:

  1. python中字串為不可變的資料型別之一;
  2. 對str1這個物件呼叫upper()方法會讓Python直譯器得到’i love python’ 這個字串的一個副本,並將它轉換成大寫,再返回。
  3. Python內建的記憶體管理技術會回收所使用的RAM,以便程式使用,也就是說,除非還有另外某個python資料物件也指向這個字串,否則Python會將它回收。