python的深拷貝和淺拷貝
阿新 • • 發佈:2021-10-19
Python的深拷貝和淺拷貝,在面試的時候經常會被問到, 為了方便理解,利用Python 執行原理進行視覺化分析的工具Python Tutor(http://www.pythontutor.com)進行一下分析
Python的拷貝,用自帶的copy()函式,深拷貝在copy模組的deepcopy()
1)直接賦值,預設淺拷貝傳遞物件的引用而已,原始列表改變,被賦值的b也會做相同的改變 .
如圖所示, 直接賦值, 因為是指向的同一個物件,當bb改變時, aa跟著改變.
2)copy淺拷貝,沒有拷貝子物件,所以原始資料改變,子物件會改變 .淺拷貝只是新建了一個物件,然後物件內部的元素和原物件的元素都是同樣的。相互之間的修改可能會有影響.
如下圖所示, 當子物件進行修改時, aa和bb的對應值都發生了改變, 當非子物件改變時,互不影響
3)深拷貝,包含物件裡面的自物件的拷貝,所以原始物件的改變不會造成深拷貝里任何子元素的改變