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來判段是否指向同乙個位址
python 可變型別和不可變型別
1.什麼是不可變型別 變數對應的值中的資料是不能被修改,如果修改就會生成乙個新的值從而分配新的記憶體空間。不可變型別 數字 int,long,float 布林 bool 字串 string 元組 tuple 2.什麼是可變型別 變數對應的值中的資料可以被修改,但記憶體位址保持不變。可變型別 列表 l...
python類的可變型別成員和不可變型別成員的區別
usr bin python coding utf 8 class foo1 object x 1 class foo2 object x f1 foo1 f2 foo2 f1.x 3 print f1.x print foo1.x f2.x 101 3 print f2.x print foo2....
Python的可變和不可變型別
一 可變型別 不可雜湊型別就是可變型別 unhashable 值改變,id不變,證明改的是原值,證明原值是可以改變的。總結 list,dict 都為可變型別,整體的位址不變,變的是裡面的值,針對字典多說點 key必須是不可變型別,value可以是任意型別。list是可變型別 l aaa bbb cc...