到底什么是可變對(duì)象什么是不可變對(duì)象?_第1頁(yè)
到底什么是可變對(duì)象什么是不可變對(duì)象?_第2頁(yè)
到底什么是可變對(duì)象什么是不可變對(duì)象?_第3頁(yè)
到底什么是可變對(duì)象什么是不可變對(duì)象?_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、到底什么是可變對(duì)象什么是不可變對(duì)象?相信接觸過python的同學(xué)都聽說過可變型對(duì)象和不可變型對(duì)象。那么,到底什么是可變型對(duì)象,什么是不可變型對(duì)象呢?首先我們先理解一下對(duì)象的概念。對(duì)摩陽金乂:數(shù)握XB4于逹些歔搖勰作的第repLace()splitf)joint)isnum()|宇笳串對(duì)摩IIpython!數(shù)甥對(duì)象的含義jpg對(duì)象,就是數(shù)據(jù)以及基于這些數(shù)據(jù)的操作的集合。舉個(gè)例子,a=python。我們通過上面的方法定義了一個(gè)字符串對(duì)象a,python”就是這個(gè)字符串對(duì)象的數(shù)據(jù)。像我們常用的replce()、split().這些就是操作這些數(shù)據(jù)的方法。數(shù)據(jù)和這些方法一起構(gòu)成了字符串對(duì)象a。那么,問

2、一個(gè)問題。你能夠改變字符串對(duì)象a中的值么?可能有人說,那還不簡(jiǎn)單。a=notpython”?,F(xiàn)在字符串對(duì)象a的數(shù)據(jù)已經(jīng)從python”變成了notpython了。No!No!No!你這樣做只是重新定義了一個(gè)字符串對(duì)象,而不是將原來的字符串對(duì)象中的數(shù)據(jù)改變了。知道你可能不信,下面的代碼可以證明一切a=pythonprint(a的內(nèi)存地址是,,id(a)a=notpythonprint(a的內(nèi)存地址是,,id(a)a的內(nèi)存地址是,2147884255664a的內(nèi)存地址是,2147886689008看到了么,兩次的內(nèi)存地址是不一樣的,說明你根本不是改變了一個(gè)對(duì)象中的數(shù)據(jù),只是重新創(chuàng)建了一個(gè)新的對(duì)象。

3、abed,replace(4a;f)柳不甚竭臨慕酚撤據(jù)PbccT薩衣為fh匚cT融曇在一小折酚內(nèi)45地誕咅生了一個(gè)粉的字?5串對(duì)摩.中將串對(duì)摩歸宇符串對(duì)摩TOC o 1-5 h zX/XfIIII:abed;Hfbcdw: HYPERLINK l bookmark20IIIIIIIIIIIIIIII;摳攧作:;數(shù)握醮作IIIIKi/*、/0 x83000X89F3不可變對(duì)象例子jpg現(xiàn)在我們來正規(guī)的定義一下什么是不可變對(duì)象。不可變對(duì)象定義jpg在保持對(duì)象不變的前提下,對(duì)象中的數(shù)據(jù)不能被改變。這樣的對(duì)象就叫做不可變對(duì)象。屬于不可變對(duì)象的有整型對(duì)象int浮點(diǎn)型對(duì)象float以及字符串型對(duì)象stri

4、ng。下面,我們?cè)賮碚f說可變對(duì)象。與不可變對(duì)象對(duì)應(yīng),可變對(duì)象的定義就是:在保持對(duì)象不變的前提下,對(duì)象中的數(shù)據(jù)可以被改變。這樣的對(duì)象就叫做可變對(duì)象。再舉個(gè)例子,list=1,2,3print(list的內(nèi)存地址是:”,id(list)listO=8print(list)print(list的內(nèi)存地址是:,id(list)list的內(nèi)存地址是:21478546033368,2,3list的內(nèi)存地址是:2147854603336我們能夠輕而易舉的在保證同一個(gè)對(duì)象的前提下,改變列表對(duì)象中的數(shù)據(jù)。所以列表對(duì)象就是一個(gè)可變對(duì)象。常見的可變對(duì)象有,列表對(duì)象list和字典對(duì)象diet可是為什么我們可以改變列表

5、對(duì)象中的數(shù)據(jù)而不能夠改變字符串對(duì)象中數(shù)據(jù)呢?其實(shí),原因很簡(jiǎn)單。可變對(duì)象和不可變對(duì)象有著另外一組名字,叫做數(shù)據(jù)對(duì)象和容器對(duì)象。數(shù)據(jù)對(duì)象很容易理解。像整型、浮點(diǎn)型以及列表都是對(duì)數(shù)據(jù)類型的描述??墒侨萜鲗?duì)象應(yīng)該怎么理解呢?容器對(duì)象與數(shù)據(jù)對(duì)象是對(duì)應(yīng)的。容器對(duì)象是用來存儲(chǔ)數(shù)據(jù)對(duì)象的,他們的作用只是為了方便數(shù)據(jù)對(duì)象的使用。容器對(duì)象不會(huì)直接保存數(shù)據(jù)的值,而是保存數(shù)據(jù)對(duì)象。因此我們可以通過修改容器中的數(shù)據(jù)對(duì)象達(dá)到修改容器中數(shù)據(jù)的目的。中將串對(duì)尊列基對(duì)眾荒組對(duì)孝數(shù)據(jù)對(duì)象與容器對(duì)象jpg說到現(xiàn)在你是不是對(duì)可變型對(duì)象和不可變型對(duì)象有一個(gè)大致的了解呢?相信,細(xì)心的小伙伴一定發(fā)現(xiàn)了一個(gè)問題。那就是元組對(duì)象tupletu

6、ple不能被修改而且還是一個(gè)容器對(duì)象。可是元組中的數(shù)據(jù)真的不能被修改么?我們用事實(shí)說話,再看一個(gè)例子tuple=(1,2,1,2,3)print(tuple的內(nèi)存地址是:”,id(tuple)tuple20=8print(tuple)print(tuple的內(nèi)存地址是:,id(tuple)LjiikjiiUiiUiiUiiUiikjiiUiiUiiUiiUiikjiiUiiUiiUiiUiikjiiUiiUiiUiiUiikjiiUiiUiiUiiUiikjiiUiiklist的內(nèi)存地址是:2147886586840(1,2,8,2,3)list的內(nèi)存地址是:2147886586840元組對(duì)象

7、的確是一個(gè)容器對(duì)象,只不過它的內(nèi)部機(jī)制規(guī)定元組對(duì)象tuple中元素(對(duì)象)不能被其他對(duì)象替換。但是如果tuple中保存的是一個(gè)可變型的對(duì)象。那么元組中的數(shù)據(jù)依然可以被修改。大家可能還是有些不能接受。或者說依然感覺印象中元組就應(yīng)該是個(gè)不可變對(duì)象。我再舉個(gè)例子,大家都知道,字典的key必須是一個(gè)不可變型對(duì)象。如果是一個(gè)可變型對(duì)象就會(huì)報(bào)錯(cuò)。dict=(1,2,3):1print(dict)diet=(1,2,1,2):1ywwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwTraeebaek(mostrecentcalllast):File,line1,inTypeError:unhashabletype:list看到了么?當(dāng)元組中不包含可變對(duì)象時(shí),可以作為字典的key。而當(dāng)元組中包含了可變對(duì)象list時(shí),就不能作為字典的key了。最后,我們來總結(jié)一下:如果在保持對(duì)象不變(內(nèi)存地址不變)的前提下,對(duì)象中的數(shù)據(jù)可以被修改,那么,這個(gè)對(duì)象就是可變對(duì)象。反之,如果對(duì)象中的數(shù)據(jù)可以修改,那么這個(gè)對(duì)象就是可變對(duì)象。所有的數(shù)據(jù)對(duì)象(整型、浮點(diǎn)型、字符串)都是不可變對(duì)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論