浅拷贝 python_python中什么是浅拷贝
python中淺拷貝是對一個對象最頂層的拷貝。 淺拷貝對可變數據類型會拷貝這個對象的引用;對于不可變數據類型進行對象資源的拷貝,即只拷貝對象的數據內容和父對象,不拷貝對象內部的子對象。
在python中,對象賦值實際上是對象的引用。當創建一個對象,然后把它賦給另一個變量的時候,python并沒有拷貝這個對象,而只是拷貝了這個對象的引用。
淺拷貝(copy):
淺拷貝是對一個對象最頂層的拷貝,拷貝引用。 淺拷貝對可變類型會進行淺拷貝(拷貝一個對象的引用)。
對于不可變數據類型進行對象資源的拷貝,只拷貝對象的數據內容。拷貝父對象,不拷貝對象內部的子對象。
>>>?import?copy
>>>?c=copy.copy(alist)
>>>?print?alist;print?c
[1,?2,?3,?['a',?'b']]
[1,?2,?3,?['a',?'b']]
>>>?alist.append(5)
>>>?print?alist;print?c
[1,?2,?3,?['a',?'b'],?5]
[1,?2,?3,?['a',?'b']]
>>>?alist[3]['a',?'b']
>>>?alist[3].append('cccc')
>>>?print?alist;print?c
[1,?2,?3,?['a',?'b',?'cccc'],?5]
[1,?2,?3,?['a',?'b',?'cccc']]?里面的子對象被改變了print("淺拷貝:")
import?copy
b=[1,2,3,4,5]
print("id?b:",id(b))
h=copy.copy(b)
print("id?h",id(h))
print(h)
h.append(6)
print(h)
print("id?h",id(h))
print(b)???#淺拷貝新的列表h改變了,原來的b沒變。
b[1]='n'???#列表元素改變后,新的列表也沒變
print(h)
輸出:
淺拷貝:
('id?b:',?140165805110552)
('id?h',?140165805110480)
[1,?2,?3,?4,?5]
[1,?2,?3,?4,?5,?6]
('id?h',?140165805110480)
[1,?2,?3,?4,?5]
[1,?2,?3,?4,?5,?6]
總結
以上是生活随笔為你收集整理的浅拷贝 python_python中什么是浅拷贝的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python找房源_python抓取贝壳
- 下一篇: 怎么根据蓝屏代码 蓝屏代码怎么分析?