在Python中,淺複製和深複製的概念與值複製和指標複製(引用複製)有關,但它們並不完全相同。下面是它們之間的關係和區別:
-
淺複製(Shallow Copy):
- 類似於“指標複製”或“引用複製”。
- 淺複製建立了一個新的物件,但是它所含的容器物件(例如列表、字典、類的例項等)仍然指向原始物件中的容器物件。
- 對於不可變型別(如整數、浮點數、字串、元組),淺複製會複製其值。
- 對於可變型別,淺複製只是複製了容器物件的引用,而不是容器物件本身。因此,如果修改了複製後的物件中的可變元素,原始物件也會受到影響。
-
深複製(Deep Copy):
- 類似於“值複製”。
- 深複製建立了一個新的物件,並且遞迴地複製了原始物件中所有的子物件。
- 對於不可變型別和可變型別,深複製都會複製其值,確保新物件和原始物件完全獨立,修改新物件不會影響原始物件。
在Python中,淺複製可以透過copy
模組的copy()
函式實現,而深複製可以透過copy
模組的deepcopy()
函式實現。