Python的引用與賦值
阿新 • • 發佈:2022-03-23
python中的=號賦值,實際上這種是一種共享記憶體的引用賦值。可以這麼說,python中根本沒有其他語言的賦值這回事,全部都是引用操作。
# python中的變數在第一次出現時,直接賦值,這個過程就是建立一個記憶體空間,並把資料儲存進去。 num = 3 # 但是,如果該變數賦值過程中,=號右邊的不是一個新資料,而是已經在記憶體中出現過的資料/變數,則這個過程是不會佔用新的記憶體空間的。 num1 = num print(num, id(num)) #3 4561938800print(num1, id(num)) #3 4561938800 # 這裡重新修改了變數的指向,這裡為什麼num不跟著一起變化呢?原因是因為小資料池的機制導致的。4已經在記憶體中了。 # 因此形成的效果在於如果變數的值是一個數值、字串型別,那麼變數改值就會發生變數指向到其他的記憶體空間,但是不影響引用的變數。 num1 = 4 print(num1) # 4 print(num) # 3
# 但是,針對於一些複雜的資料結構:字典,列表,集合,這幾種就有區分了。以以下列表為例: # data1 = [1,2,3] # data2 = data1 # data2.append(4) #print(id(data2), data2) # 2722959468672 [1, 2, 3, 4] # print(id(data1), data1) # 2722959468672 [1, 2, 3, 4]