?Python賦值一切對象皆傳址怎么理解

本篇內(nèi)容主要講解“Python賦值一切對象皆傳址怎么理解”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Python賦值一切對象皆傳址怎么理解”吧!

創(chuàng)新互聯(lián)是專業(yè)的內(nèi)江網(wǎng)站建設(shè)公司,內(nèi)江接單;提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁設(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)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

Python賦值一切對象皆傳址 經(jīng)常聽到編程語言賦值操作中,有傳引用,傳值等傳遞方式,但在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一切皆為對象。賦值一直都是傳址。所有變量都是保存著對象的地址。上例子中的第一種情況將s賦值給了t,此時(shí)s和t指向了同一個(gè)對象。所以執(zhí)行reverse時(shí),對象本身被改變。因?yàn)閟和t指向同一個(gè)對象,所以你無論輸出s還是t都是輸出同一個(gè)已經(jīng)被reverse的對象。 第二種情況是對s執(zhí)行了一個(gè)切片(slicing)的操作。此時(shí)本身s[::-1]返回的不是s指向的那個(gè)對象本身,而是一個(gè)在內(nèi)存中根據(jù)運(yùn)算重新生成的對象,所以t指向的是一個(gè)s[::-1]生成的新對象的地址。而s還是指向著原來的對象,由于s[::-1]不會改變原來對象的值,所以s的值是不會改變的。

延伸閱讀:

在Python中,即使是整數(shù)類型,它也是按照對象來處理的。例如a=1,它并不是將1值賦值給了a,而是將一個(gè)整數(shù)對象1的地址賦值給了a。由于Python對小整數(shù)的特殊處理,凡是在一定范圍內(nèi)的小整數(shù),是統(tǒng)一使用了“小整數(shù)對象池”。也就是說所有的小整數(shù),例如1,都是使用對象池里面的同一個(gè)對象。但是,小整數(shù)對象池是有限的,范圍是[-5, 257) 注意左閉右開。所以,超過這個(gè)范圍的整數(shù),嚴(yán)格來說,是需要生成這樣的一個(gè)對象的。所以,就會出現(xiàn)下面的情況

>>> a = 1
>>> b = 1
>>> id(a) == id(b)
True

>>> c = 1000000
>>> d = 1000000
>>> id(c) == id(d)
False

而整數(shù)對象是一種不可變類型,也就是說,一旦你生成了一個(gè)257的整形對象,你這個(gè)對象保存的數(shù)字就是不能再變化的了。那么我們對整數(shù)執(zhí)行加法的時(shí)候,得到的結(jié)果和原來的對象是什么關(guān)系呢?答案是,沒關(guān)系,結(jié)果是根據(jù)求和數(shù)值產(chǎn)生的一個(gè)全新的對象。即使全新的對象和原來數(shù)值一樣,也是不同的對象(除非數(shù)字在小整數(shù)對象池內(nèi))。例如:

>>> e = c + 0
>>> id(c) == id(e)
False
>>> f = a + 0
>>> id(a) == id(f)
True

而列表類型是一種可變類型。他提供了一些原地改變對象而不用生成新對象的方法,例如s.reverse()。但同時(shí),也可以生成一個(gè)新的對象儲存想要的結(jié)果,例如s[::-1],或者reversed(s)。PS:注意reverse()和reversed的區(qū)別

到此,相信大家對“Python賦值一切對象皆傳址怎么理解”有了更深的了解,不妨來實(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賦值一切對象皆傳址怎么理解
鏈接URL:http://muchs.cn/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)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)