1. 程式人生 > 其它 >Python的引用與賦值

Python的引用與賦值

在其他的程式語言(golang,java,php)中賦值實際上就是開闢了一個新的記憶體空間,把資料儲存到了這個記憶體空間裡面。

python中的=號賦值,實際上這種是一種共享記憶體的引用賦值。可以這麼說,python中根本沒有其他語言的賦值這回事,全部都是引用操作。

 

# python中的變數在第一次出現時,直接賦值,這個過程就是建立一個記憶體空間,並把資料儲存進去。
num = 3

# 但是,如果該變數賦值過程中,=號右邊的不是一個新資料,而是已經在記憶體中出現過的資料/變數,則這個過程是不會佔用新的記憶體空間的。
num1 = num
print(num, id(num))  #3 4561938800
print(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]