本文跟大家分享一篇文章帶領大家讀懂python賦值與拷貝的知識,有興趣的朋友一起看看吧
##變數與賦值
在Python 中,一切皆為對象,對象通過“變量名”引用,“變量名”更確切的叫法是“名字”,好比我們每個人都有自己的名字一樣,咱們通過名字來代指某個人,代碼裡面透過名字來指涉某個物件。 變數賦值就是給物件綁定一個名字,賦值並不會拷貝物件。好比我們出生的時候父母就要給我們取一個名字一樣,給人取個綽號並不來多出一個人來,只是多一個名字罷了。 兩個物件做比較有兩種方式,分別是:is 與== ,is比較的是兩個物件是否相同,透過物件的ID值可辨識是否為相同對象,==比較的是兩個物件的值是否相等>>> x1 = [1,2] >>> x2 = [1,2] >>> x1 is x2 False >>> id(x1) 4338854088 >>> id(x2) 4338904392 >>> x1 == x2 True
>>> x3 = x2 >>> x3 is x2 True >>> id(x3) 4338904392
>>> x2.append(3) >>> x2 [1, 2, 3] >>> x3 [1, 2, 3]
>>> x2 = [3, 4] >>> x3 [1, 2, 3]
#物件拷貝
在業務中有時我們需要複製一個對象,但又不想對原對象產生副作用,肯定不能透過賦值給一個新變數來解決(因為賦值不是拷貝對象),所以Python 專門提供了一種拷貝機制,基於原始對象快速創建出一個含有相同值的物件。此功能由copy模組提供。 拷貝又分為淺拷貝和深拷貝。>>> s = [1,2,3]>>> sc = copy.copy(s) # 浅拷贝>>> sc[1, 2, 3] >>> sdc = copy.deepcopy(s) # 深拷贝 >>> sdc [1, 2, 3]
>>> s == sc == sdc True >>> s is sc False >>> s is sdc False
>>> x = [2, 3] >>> y = [7, 11] >>> z = [x, y] >>> a = copy.copy(z) # 浅拷贝 >>> a[0] is z[0] True
>>> b = copy.deepcopy(z) # 深拷贝 >>> b[0] is z[0] False
#
以上是Python賦值與拷貝的詳細內容。更多資訊請關注PHP中文網其他相關文章!