1. 程式人生 > 其它 >python的深拷貝和淺拷貝

python的深拷貝和淺拷貝

Python的深拷貝和淺拷貝,在面試的時候經常會被問到, 為了方便理解,利用Python 執行原理進行視覺化分析的工具Python Tutor(http://www.pythontutor.com)進行一下分析

Python的拷貝,用自帶的copy()函式,深拷貝在copy模組的deepcopy()

1)直接賦值,預設淺拷貝傳遞物件的引用而已,原始列表改變,被賦值的b也會做相同的改變 .

如圖所示, 直接賦值, 因為是指向的同一個物件,當bb改變時, aa跟著改變.

2)copy淺拷貝,沒有拷貝子物件,所以原始資料改變,子物件會改變 .淺拷貝只是新建了一個物件,然後物件內部的元素和原物件的元素都是同樣的。相互之間的修改可能會有影響.

如下圖所示, 當子物件進行修改時, aa和bb的對應值都發生了改變, 當非子物件改變時,互不影響

3)深拷貝,包含物件裡面的自物件的拷貝,所以原始物件的改變不會造成深拷貝里任何子元素的改變