關於Python中深拷貝與淺拷貝的理解(一)---概念
阿新 • • 發佈:2019-02-08
緣由
用Python也有很長時間了,一直在做科學計算和爬蟲採集方面的東西。自己的畢業論文涉及到編寫一個科學計算的軟體,也是用Python編寫。介面採用PyQt。
軟體的主體前段時間已經寫好,最近在試算的時候出現兩個問題:
- 同一種計算方法,點選計算兩次,結果會變,後面再點選幾次結果保持不變
- 不同的計算方法,第一次改變計算方法可能結果會變,後面再點選幾次結果保持不變
不管怎樣,還是要除錯的,所以以上都是廢話,talk is cheap,開擼。
找bug
在我構造的類中,有self.original_dataPython中的深拷貝與淺拷貝概念
其實這個問題在學習Python的過程中應該是一個基礎問題,但由於當時沒有在意,以至於後面成型軟體要整體上進行修改。輸出為:import copy a = [1, 2, 3, 4, ['a', 'b']] #原始物件 b = a #賦值,傳物件的引用 c = copy.copy(a) #物件拷貝,淺拷貝 d = copy.deepcopy(a) #物件拷貝,深拷貝 a.append(5) #修改物件a a[4].append('c') #修改物件a中的['a', 'b']陣列物件 print 'a = ', a print 'b = ', b print 'c = ', c print 'd = ', d
a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c = [1, 2, 3, 4, ['a', 'b', 'c']]
d = [1, 2, 3, 4, ['a', 'b']]
還有這篇部落格,解釋得更加詳細一些。 基本就是這樣,Python深拷貝與淺拷貝的概念存與此。