python之深拷貝 淺拷貝

2021-10-06 23:03:25 字數 770 閱讀 6361

如上圖,變數a和b的記憶體位址是相同的,說明python中的賦值可以看作是引用,變數指向了同乙個記憶體空間

copy模組中的deepcopy就展示了深拷貝,c就是通過a的深拷貝

測試一下,追加a列表,c並沒有發生變化,c指向的是乙個新的記憶體空間

這段**是要說明copy模組下的copy是淺拷貝,但是拷貝物件的id 位址是不同的。雖然e和f的記憶體位址不同,好似是深拷貝,但其實e在賦值的時候指向的是乙個新的列表,這個新的列表裡又指向了a和d;同理 f copy e也是如此

這段**要說明copy模組下的deepcopy是深拷貝,拷貝物件的id 位址是不同的,c指向了乙個新的位址,但是列表扔指向了之前的a和b;e通過深拷貝,指向了乙個新的位址,同時也拷貝了新的a和b(給了a和b乙個新的位址)。

深拷貝和淺拷貝可以影響對拷貝變數值得修改。

python之深拷貝 淺拷貝

來自於牛客網,刷題時候遇到的 題目 下面 執行後,a b c d四個變數的值,描述錯誤的是?import copy a 1,2,3,4,a b b a c copy.copy a d copy.deepcopy a 5 選項 a 1,2,3,4,a b c 5 b 1,2,3,4,a b c 5 c...

python 淺拷貝 深拷貝

直接賦值 其實就是物件的引用 別名 淺拷貝 copy 拷貝父物件,不會拷貝物件的內部的子物件。深拷貝 deepcopy copy 模組的 deepcopy 方法,完全拷貝了父物件及其子物件。usr bin python import copy a 1,2,3,4,a b 原始物件 b a 賦值,傳物...

python深拷貝 淺拷貝

在python中,物件賦值實際上是物件的引用。當建立乙個物件,然後把它賦給另乙個變數的時候,python並沒有拷貝這個物件,而只是拷貝了這個物件的引用 一般有三種方法,alist 1,2,3,a b 1 直接賦值,傳遞物件的引用而已,原始列表改變,被賦值的b也會做相同的改變 alist 1,2,3,...