Python經驗主義學習之路——可變物件和不可變物件
阿新 • • 發佈:2019-01-06
可變物件與不可變物件
資料型別和變數
Python的資料型別和C++幾乎相同,但是變數的概念和C++/C目前來看有一點差別(但在彙編的角度上看,和彙編中的變數概念差不多),在C/C++中,我們可以把變數在邏輯上抽象成一個帶有名字的盒子,如下簡單程式碼。int main(void){
int a;
a = 5;
a = 6;
}
其中a相當於一個可以存放資料的盒子,在高階的邏輯層面上,可以這麼認為,在記憶體中建立了個叫 a 的盒子,這是盒子裡是空的(任意的),之後在裡面放入了5,之後又將6放入盒中,覆蓋了5。但是在彙編層面上a其實是一個地址。
在Python中,變數a 就是一個名字,一個指標。該指標指向了一個物件。在Python中我目前是這樣理解的一個物件是特定地址的資料,資料型別這個概念是對於變數指向的物件來說的(只有物件才有資料型別這個概念)。比如 5 這個 a指向的物件是 int型別,6這個a指向的物件是int型,而不是說 a 是int 型,a只是一個變數,只是一個指標而已。
list 和 tuple認識可變物件和不可變物件
a = 5 ;
a = 'abc'
a開始指向了5,之後又指向了'abc',似乎a變了,但是記憶體中的 5 , abc本身的內容並沒有發生改變。 關於 list 和 tuple 的探討。詳見 點選開啟連結 其中,list和tuple作為複合物件, l其中List為可變物件,tuple為不可變物件。list和tuple的實質是裝著記憶體地址,說他們變或者不變實質是指向的變或者不變。但他們指向的內容變或者不變就是另一回事情了。