国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

python中引用與復(fù)制用法實(shí)例分析

2020-02-23 01:33:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了python中引用與復(fù)制用法。分享給大家供大家參考。具體分析如下:

在python中,任何不可變對(duì)象是傳值的,而可變對(duì)象是傳引用的。

不管是向函數(shù)傳遞參數(shù)或者是任何形式的對(duì)象復(fù)制來(lái)說(shuō),不可變對(duì)象(比如整數(shù),字符串)被真正復(fù)制,而可變對(duì)象只是復(fù)制了一個(gè)對(duì)他們的引用,即在內(nèi)存中只有一份對(duì)象,而引用兩份。
 
a=b 這樣的賦值,就會(huì)創(chuàng)建對(duì)b的引用,對(duì)于象數(shù)字和字符串這樣的不可變的對(duì)象,這種賦值實(shí)際是創(chuàng)建了b的一個(gè)副本

>>> a='hello'>>> b=a>>> id(a)29326432>>> id(b)29326432>>> b is aTrue>>> a=1000>>> b'hello'

對(duì)于可變對(duì)象,比如字典和列表,a和b引用的是同一個(gè)對(duì)象,修改其中任意一個(gè)變量都會(huì)影響到另一個(gè)。

>>> a=[1,2,3,4]>>> b=a>>> id(a)29280896>>> id(b)29280896>>> b[3]='ccccccccc'>>> a[1, 2, 3, 'ccccccccc']>>> 

列表和字典這樣的容器對(duì)象,可以使用兩種賦值操作:淺復(fù)制和深復(fù)制。淺復(fù)制創(chuàng)建一個(gè)新對(duì)象,但它包含的是對(duì)原始對(duì)象中包含的項(xiàng)的引用。

比如下面的淺復(fù)制:

>>> a=[1,2,3,4,[9,0]]>>> b=a>>> a=[1,2,3,4,[9,0]]>>> b=list(a)>>> b is aFalse>>> b[0]=1000>>> b[1000, 2, 3, 4, [9, 0]] #注意,b修改了b[0]以后,對(duì)a沒(méi)有影響>>> a[1, 2, 3, 4, [9, 0]]>>> b[4][1]='cccc'  #注意,b修改了 b[4][1]以后,對(duì)a有影響>>> b[1000, 2, 3, 4, [9, 'cccc']]>>> a[1, 2, 3, 4, [9, 'cccc']]

深復(fù)制將創(chuàng)建一個(gè)新對(duì)象,并且遞歸的復(fù)制它包含的所有對(duì)象,沒(méi)有內(nèi)置對(duì)象可以創(chuàng)建深復(fù)制,可以使用copy.deepcopy()函數(shù)完成。

>>> import copy>>> a=[1,2,3,[4,5]]>>> b=copy.deepcopy(a)>>> id(b)29582240    >>> id(a)29581840>>> a is bFalse>>> b[0]=1000>>> b[1000, 2, 3, [4, 5]] #注意修改了b[0]之后對(duì)a沒(méi)有影響>>> a[1, 2, 3, [4, 5]]>>> b[3][1]='gggg'>>> b[1000, 2, 3, [4, 'gggg']] #修改了 b[3][1]之后對(duì)a也沒(méi)有影響,這是和淺復(fù)制的區(qū)別>>> a[1, 2, 3, [4, 5]]

希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 苏州市| 南靖县| 双桥区| 寻乌县| 伊川县| 仪陇县| 寿光市| 贺兰县| 仪陇县| 龙门县| 鄂温| 红安县| 江源县| 定西市| 双流县| 原阳县| 海原县| 常州市| 黎平县| 永康市| 杨浦区| 红安县| 普定县| 杭锦旗| 尚志市| 平和县| 闽清县| 丹东市| 望都县| 新宾| 浠水县| 滦平县| 甘洛县| 莱阳市| 长葛市| 米林县| 揭阳市| 米林县| 宁津县| 额济纳旗| 盱眙县|