1. 程式人生 > >python不可變型別和可變型別

python不可變型別和可變型別

python變數可以分為兩種型別

不可變型別(數字、字串、元組、不可變集合)

可變型別(列表、字典、可變集合)

python所宣告的變數都以物件的形式存在,存在於機器的固定記憶體之中。

可以理解為變數名為物件的指標

如宣告a=3,則a指向儲存3的空間,python通過使用計數器的方式來判斷空間的引用情況,當計數器為0時則會將記憶體回收。

python在宣告不可變型別時會在已經宣告的物件中尋找該物件是否已經被宣告過,若該物件被宣告過則,變數會直接指向該物件不會再申請新的記憶體空間。

如a=3已經宣告這時宣告b=3,則a,b指向同一塊記憶體

不可變型別不能對其內容直接修改,如字串'qweqw0'可以對其進行分割加長的處理(經過如此處理之後python其實是將新的字串儲存到新的記憶體中),但是不能替換改變其字串中某個字母的內容


python宣告可變型別,後在宣告同樣的內容python會重新發申請空間對其進行儲存


如陣列a=[1,2,3]

這裡要注意因為變數都是以指標的形式存在,所以當以=的形式賦值時,其實是將其指向的物件進行改變,並不是改變了其記憶體中的內容。所以在用=賦值可變型別後,因為兩個變數所指向的地址是相同的,當其改變其物件的部分內容時,另外一個變數的內容也會跟著改變。如果要想拷貝陣列等物件,需要使用相應的函式來進行操作。

python中可以用is來判段是否指向同一個地址