欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python深copy和淺copy區(qū)別對(duì)比解析

 更新時(shí)間:2019年12月26日 14:26:42   作者:鵠望  
這篇文章主要介紹了python深copy和淺copy區(qū)別對(duì)比解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了python深copy和淺copy區(qū)別對(duì)比解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

首先先看一段代碼

import copy
 
a = [1, 2, 3, [4]]
b = a
c = a.copy()
d = copy.deepcopy(a)
e = copy.copy(a)
a.append(4)
a[3].append(5)
print('a值為 {} 地址為 {}'.format(a, id(a)))
print('b值為 {} 地址為 {}'.format(b, id(b)))
print('c值為 {}  地址為 {}'.format(c, id(c)))
print('d值為 {}    地址為 {}'.format(d, id(d)))
print('e值為 {}  地址為 {}'.format(e, id(e)))

執(zhí)行結(jié)果:

a值為 [1, 2, 3, [4, 5], 4] 地址為 4555940360
b值為 [1, 2, 3, [4, 5], 4] 地址為 4555940360
c值為 [1, 2, 3, [4, 5]]  地址為 4555873544
d值為 [1, 2, 3, [4]]    地址為 4556227912
e值為 [1, 2, 3, [4, 5]]  地址為 4556227464

從結(jié)果中可以看出來(lái):

b賦值的為a的內(nèi)存地址,值會(huì)隨著a的變化而變化---直接賦值,對(duì)象引用

c=a.copy()使用的為python自帶的copy方法,從結(jié)果中可看出復(fù)制后c的地址與a的地址不一致,也就是c將a的值完全復(fù)制包括地址,其結(jié)果就是c的值不會(huì)隨著a的值變化而變化---深copy,完全拷貝了父對(duì)象及其子對(duì)象

d和e使用的是python自帶的copy模塊中的copy方法和deepcopy方法:

  其中d的值地址和a不一致,值也不會(huì)隨著a的變化而變化---深copy,完全拷貝了父對(duì)象及其子對(duì)象

其中e中父級(jí)內(nèi)容不隨著a的變化而變化,但e中子list中內(nèi)容會(huì)隨著a的變化而變化---淺copy,拷貝父對(duì)象,不會(huì)拷貝對(duì)象的內(nèi)部的子對(duì)象

print('a子對(duì)象值為 {} 地址為 {}'.format(a[3], id(a[3])))
print('e子對(duì)象值為 {} 地址為 {}'.format(a[3], id(a[3])))
結(jié)果:
a子對(duì)象值為 [4, 5] 地址為 4334486344
e子對(duì)象值為 [4, 5] 地址為 4334486344

由上可得出,python中的copy分為三種:

1、直接復(fù)制:也就是對(duì)象引用

2、淺拷貝:拷貝父對(duì)象,不會(huì)拷貝對(duì)象的內(nèi)部的子對(duì)象。

3、深拷貝:完全拷貝了父對(duì)象及其子對(duì)象

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論