欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Python中怎么引用傳遞變量賦值-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)Python中怎么引用傳遞變量賦值,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),都安企業(yè)網(wǎng)站建設(shè),都安品牌網(wǎng)站建設(shè),網(wǎng)站定制,都安網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,都安網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

曾經(jīng)看到這樣一個(gè)問(wèn)題,一個(gè)字典中的元素是列表,將這個(gè)列表元素賦值給一個(gè)變量,然后修改這個(gè)列表中元素的值,結(jié)果發(fā)現(xiàn),字典中那個(gè)列表也同樣修改了。那個(gè)問(wèn)題如下:

dict={'a':[1,2,3,4,5],'b':2}

x=dict['a']

foriinrange(5):

x[i]=0

print(dict['a'])

程序運(yùn)行結(jié)果如下:[0,0,0,0,0]

這兒涉及到Python賦值到底是引用還是拷貝一份的問(wèn)題,即賦值時(shí)是傳值還是傳址。上面問(wèn)題是將"a"的值賦給了x出現(xiàn)了上述情況,如果是將"b"的值賦給了x,當(dāng)我們修改x的值時(shí),字典dict的值并不受影響。

>>>dict={'a':[1,2,3,4,5],'b':2}

>>>x=dict['b']

>>>x

2

>>>x=x+3

>>>x

5

>>>dict

{'a':[1,2,3,4,5],'b':2}

>>>

那么問(wèn)題來(lái)了,變量賦值傳遞時(shí)什么情況下是傳值(拷貝),什么情況下是傳址(引用)呢?

1、直接拷貝

當(dāng)我們不知道是引用還是拷貝的情況下,可以顯式的拷貝。比如字典對(duì)象本身都具有拷貝的方法:

x=dict.copy()

沒(méi)有拷貝方法的對(duì)象,也是可以拷貝的。這兒我們引入一個(gè)深拷貝的概念,深拷貝——即python的copy模塊提供的一個(gè)deepcopy方法。深拷貝會(huì)完全復(fù)制原變量相關(guān)的所有數(shù)據(jù),在內(nèi)存中生成一套完全一樣的內(nèi)容,在這個(gè)過(guò)程中我們對(duì)這兩個(gè)變量中的一個(gè)進(jìn)行任意修改都不會(huì)影響其他變量。還是上面的代碼,如果改成如下:

importcopy

dict={'a':[1,2,3,4,5],'b':2}

x=copy.deepcopy(dict['a'])

foriinrange(5):

x[i]=0

print(dict['a'])

運(yùn)行結(jié)果dict值不受影響。

除了深拷貝,copy模塊還提供一個(gè)copy方法,稱其為淺拷貝,對(duì)于簡(jiǎn)單的對(duì)象,深淺拷貝都是一樣的,上面的詞典對(duì)象的copy方法就是淺拷貝。

淺拷貝時(shí)改變第一層次相互不受影響(上例中詞典b值的修改),第二層次(上例中詞典a的列表值修改)就相互影響了,改一個(gè),其他跟著變。、

可見(jiàn)詞典各個(gè)拷貝的id是不同的,但詞典a值的id是相同的。如果我們需要真正意義的拷貝,就用深拷貝吧。

2、傳遞規(guī)則

Python賦值過(guò)程中不明確區(qū)分拷貝和引用,一般對(duì)靜態(tài)變量的傳遞為拷貝,對(duì)動(dòng)態(tài)變量的傳遞為引用。(注,對(duì)靜態(tài)變量首次傳遞時(shí)也是引用,當(dāng)需要修改靜態(tài)變量時(shí),因?yàn)殪o態(tài)變量不能改變,所以需要生成一個(gè)新的空間存儲(chǔ)數(shù)據(jù))。

字符串,數(shù)值,元組均為靜態(tài)變量

列表,字典為動(dòng)態(tài)變量。

變量有時(shí)比較復(fù)雜,存在組合現(xiàn)象,比如字典中包含列表,列表中包含字典,但賦值時(shí),總是屬于某個(gè)類型。如果實(shí)在不清楚狀況,可以試驗(yàn)一下,用id()這個(gè)函數(shù)看看,如果是引用,兩個(gè)變量指向的地址是相同的。例如:

>>>a=6

>>>id(a)

10413476

>>>b=a

>>>id(b)

10413476

>>>b=8

>>>id(b)

10413452

>>>

修改變量b之前,a和b指向的地址是相同的,修改b后,地址就變了。

關(guān)于Python中怎么引用傳遞變量賦值就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

本文名稱:Python中怎么引用傳遞變量賦值-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://chinadenli.net/article44/ceghee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)App開(kāi)發(fā)電子商務(wù)服務(wù)器托管企業(yè)建站網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)