最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺述python中深淺拷貝原理

 更新時間:2018年09月18日 08:52:56   作者:刺激樂天派  
Python中,對象的賦值,拷貝(深/淺拷貝)之間是有差異的,如果使用的時候不注意,就可能產(chǎn)生意外的結(jié)果,其實(shí)這個是由于共享內(nèi)存導(dǎo)致的結(jié)果,下面我們來簡單談下Python中的深拷貝和淺拷貝。

前言

在c++中參數(shù)傳遞有兩種形式:值傳遞和引用傳遞。這兩種方式的區(qū)別我不在此說,自行補(bǔ)上,如果你不知道的話。我先上python代碼,看完我們總結(jié)一下,代碼如下:

# copy module import
import copy

# number and string
a = 12
a1 = a
a2 = copy.copy(a)
a3 = copy.deepcopy(a)
# look addr
print("==========number=======")
print(id(a))
print(id(a1))
print(id(a2))
print(id(a3))

s = '12345'
s1 = s
s2 = copy.copy(s)
s3 = copy.deepcopy(s)
# look addr
print("==========String=======")
print(id(s))
print(id(s1))
print(id(s2))
print(id(s3))

# others
target = {
  'name': 'ckmike',
  'age': 25,
  'boxes':[
    'LV',
    'Prada',
    'KUQI'
  ]
}
target1 = target
target2 = copy.copy(target)
target3 = copy.deepcopy(target)
print("==========dict-1=======")
print(id(target))
print(id(target1))
print(id(target2))
print(id(target3))
print("==========dict-2=======")
print(id(target['boxes']))
print(id(target1['boxes']))
print(id(target2['boxes']))
print(id(target3['boxes']))

輸出結(jié)果:

==========number=======
10943360
10943360
10943360
10943360
==========String=======
140567123944648
140567123944648
140567123944648
140567123944648
==========dict-1=======
140567124625088
140567124625088
140567124625160
140567123938760
==========dict-2=======
140567099339272
140567099339272
140567099339272
140567099339464

總結(jié):

對于數(shù)值、字符串而言,不管是賦值符號還是淺拷貝、深拷貝,都是引用的內(nèi)存中的同一份值,變量指向同一地址。
對于非數(shù)值非字符串而言,淺拷貝只會拷貝對象的第一層,深拷貝則會把所有層都進(jìn)行拷貝。

相關(guān)文章

最新評論

合山市| 新巴尔虎左旗| 井研县| 杭锦后旗| 句容市| 应城市| 玉门市| 固原市| 合阳县| 东至县| 新密市| 德阳市| 威海市| 六盘水市| 灵川县| 墨脱县| 双牌县| 贞丰县| 临邑县| 民权县| 随州市| 邓州市| 禹州市| 双牌县| 禄劝| 英山县| 大兴区| 津市市| 湘西| 墨竹工卡县| 余庆县| 崇明县| 荔浦县| 杂多县| 卢湾区| 盐亭县| 盐池县| 集安市| 上犹县| 白河县| 河北区|