本篇內(nèi)容主要講解“Python賦值一切對(duì)象皆傳址怎么理解”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Python賦值一切對(duì)象皆傳址怎么理解”吧!
創(chuàng)新互聯(lián)是專業(yè)的內(nèi)江網(wǎng)站建設(shè)公司,內(nèi)江接單;提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行內(nèi)江網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
Python賦值一切對(duì)象皆傳址 經(jīng)常聽到編程語(yǔ)言賦值操作中,有傳引用,傳值等傳遞方式,但在Python中只有傳地址唯一一種方式。舉個(gè)例子:
>>> s = [1,2,3] >>> t = s >>> t.reverse()
s 和 t的值都變成了[3,2,1],再看:
>>> s = [1,2,3] >>> t = s[::-1]
s的值是[1,2,3],t的值是[3,2,1],那么問題來了,Python中賦值操作是傳值還是傳地址?
Python一切皆為對(duì)象。賦值一直都是傳址。所有變量都是保存著對(duì)象的地址。上例子中的第一種情況將s賦值給了t,此時(shí)s和t指向了同一個(gè)對(duì)象。所以執(zhí)行reverse時(shí),對(duì)象本身被改變。因?yàn)閟和t指向同一個(gè)對(duì)象,所以你無論輸出s還是t都是輸出同一個(gè)已經(jīng)被reverse的對(duì)象。 第二種情況是對(duì)s執(zhí)行了一個(gè)切片(slicing)的操作。此時(shí)本身s[::-1]返回的不是s指向的那個(gè)對(duì)象本身,而是一個(gè)在內(nèi)存中根據(jù)運(yùn)算重新生成的對(duì)象,所以t指向的是一個(gè)s[::-1]生成的新對(duì)象的地址。而s還是指向著原來的對(duì)象,由于s[::-1]不會(huì)改變?cè)瓉韺?duì)象的值,所以s的值是不會(huì)改變的。
延伸閱讀:
在Python中,即使是整數(shù)類型,它也是按照對(duì)象來處理的。例如a=1,它并不是將1值賦值給了a,而是將一個(gè)整數(shù)對(duì)象1的地址賦值給了a。由于Python對(duì)小整數(shù)的特殊處理,凡是在一定范圍內(nèi)的小整數(shù),是統(tǒng)一使用了“小整數(shù)對(duì)象池”。也就是說所有的小整數(shù),例如1,都是使用對(duì)象池里面的同一個(gè)對(duì)象。但是,小整數(shù)對(duì)象池是有限的,范圍是[-5, 257) 注意左閉右開。所以,超過這個(gè)范圍的整數(shù),嚴(yán)格來說,是需要生成這樣的一個(gè)對(duì)象的。所以,就會(huì)出現(xiàn)下面的情況
>>> a = 1 >>> b = 1 >>> id(a) == id(b) True >>> c = 1000000 >>> d = 1000000 >>> id(c) == id(d) False
而整數(shù)對(duì)象是一種不可變類型,也就是說,一旦你生成了一個(gè)257的整形對(duì)象,你這個(gè)對(duì)象保存的數(shù)字就是不能再變化的了。那么我們對(duì)整數(shù)執(zhí)行加法的時(shí)候,得到的結(jié)果和原來的對(duì)象是什么關(guān)系呢?答案是,沒關(guān)系,結(jié)果是根據(jù)求和數(shù)值產(chǎn)生的一個(gè)全新的對(duì)象。即使全新的對(duì)象和原來數(shù)值一樣,也是不同的對(duì)象(除非數(shù)字在小整數(shù)對(duì)象池內(nèi))。例如:
>>> e = c + 0 >>> id(c) == id(e) False >>> f = a + 0 >>> id(a) == id(f) True
而列表類型是一種可變類型。他提供了一些原地改變對(duì)象而不用生成新對(duì)象的方法,例如s.reverse()。但同時(shí),也可以生成一個(gè)新的對(duì)象儲(chǔ)存想要的結(jié)果,例如s[::-1],或者reversed(s)。PS:注意reverse()和reversed的區(qū)別
到此,相信大家對(duì)“Python賦值一切對(duì)象皆傳址怎么理解”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
當(dāng)前文章:?Python賦值一切對(duì)象皆傳址怎么理解
鏈接URL:http://chinadenli.net/article2/ihgeic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司、微信小程序、手機(jī)網(wǎng)站建設(shè)、網(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í)需注明來源: 創(chuàng)新互聯(lián)