淺述python中深淺拷貝原理
前言
在c++中參數(shù)傳遞有兩種形式:值傳遞和引用傳遞。這兩種方式的區(qū)別我不在此說,自行補上,如果你不知道的話。我先上python代碼,看完我們總結一下,代碼如下:
# copy module import
import copy
# number and string
a = 12
a1 = a
a2 = copy.copy(a)
a3 = copy.deepcopy(a)
# look addr
print("==========number=======")
print(id(a))
print(id(a1))
print(id(a2))
print(id(a3))
s = '12345'
s1 = s
s2 = copy.copy(s)
s3 = copy.deepcopy(s)
# look addr
print("==========String=======")
print(id(s))
print(id(s1))
print(id(s2))
print(id(s3))
# others
target = {
'name': 'ckmike',
'age': 25,
'boxes':[
'LV',
'Prada',
'KUQI'
]
}
target1 = target
target2 = copy.copy(target)
target3 = copy.deepcopy(target)
print("==========dict-1=======")
print(id(target))
print(id(target1))
print(id(target2))
print(id(target3))
print("==========dict-2=======")
print(id(target['boxes']))
print(id(target1['boxes']))
print(id(target2['boxes']))
print(id(target3['boxes']))
輸出結果:
==========number=======
10943360
10943360
10943360
10943360
==========String=======
140567123944648
140567123944648
140567123944648
140567123944648
==========dict-1=======
140567124625088
140567124625088
140567124625160
140567123938760
==========dict-2=======
140567099339272
140567099339272
140567099339272
140567099339464
總結:
對于數(shù)值、字符串而言,不管是賦值符號還是淺拷貝、深拷貝,都是引用的內(nèi)存中的同一份值,變量指向同一地址。
對于非數(shù)值非字符串而言,淺拷貝只會拷貝對象的第一層,深拷貝則會把所有層都進行拷貝。
相關文章
python通過apply使用元祖和列表調用函數(shù)實例
這篇文章主要介紹了python通過apply使用元祖和列表調用函數(shù),實例分析了python中apply方法的使用技巧,需要的朋友可以參考下2015-05-05
python BlockingScheduler定時任務及其他方式的實現(xiàn)
這篇文章主要介紹了python BlockingScheduler定時任務及其他方式的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09
Python實現(xiàn)計算兩個指定日期相差幾年幾月幾日
這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)計算兩個日期之間相差多少年,多少月,多少天,文中的的示例代碼講解詳細,需要的可以參考下2024-02-02

