亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      python

      當(dāng)前位置:中華考試網(wǎng) >> python >> python編程基礎(chǔ) >> 文章內(nèi)容

      python中整數(shù)是不可變的么

      來源:中華考試網(wǎng)  [2020年9月29日]  【

        初學(xué)python的時(shí)候,可能會(huì)有很多疑惑,尤其是最先接觸的所謂的“可變數(shù)據(jù)類型”和“不可變數(shù)據(jù)類型”。python與C/C++不一樣,它的變量使用有自己的特點(diǎn),當(dāng)初學(xué)python的時(shí)候,一定要記住“一切皆為對(duì)象,一切皆為對(duì)象的引用”這句話,其實(shí)這個(gè)特點(diǎn)類似于JAVA,所以在python里面大家也不用擔(dān)心類似于C/C++中的指針的復(fù)雜問題。

        下面本文將對(duì)python里面的“可變數(shù)據(jù)類型”和“不可變數(shù)據(jù)類型”進(jìn)行分析。

        首先,我們需要知道在python中哪些是可變數(shù)據(jù)類型,哪些是不可變數(shù)據(jù)類型。可變數(shù)據(jù)類型:列表list和字典dict;不可變數(shù)據(jù)類型:整型int、浮點(diǎn)型float、字符串型string和元組tuple。

        然后,我們以int和list為例,來看看“可變數(shù)據(jù)類型”和“不可變數(shù)據(jù)類型”到底有什么區(qū)別。

      python課程免費(fèi)試聽預(yù)約

      • 地區(qū):
      • 姓名:
      • 手機(jī):

        不可變數(shù)據(jù)類型分析。先來看一段程序:

        >>> x = 1

        >>> id(x)

        31106520

        >>> y = 1

        >>> id(y)

        31106520

        >>> x = 2

        >>> id(x)

        31106508

        >>> y = 2

        >>> id(y)

        31106508

        >>> z = y

        >>> id(z)

        31106508

        >>> x += 2

        >>> id(x)

        31106484

        上面這段程序都是對(duì)不可變數(shù)據(jù)類型中的int類型的操作,id()查看的是當(dāng)前變量的地址值。我們先來看x = 1和y = 1兩個(gè)操作的結(jié)果,從上面的輸出可以看到x和y在此時(shí)的地址值是一樣的,也就是說x和y其實(shí)是引用了同一個(gè)對(duì)象,即1,也就是說內(nèi)存中對(duì)于1只占用了一個(gè)地址,而不管有多少個(gè)引用指向了它,都只有一個(gè)地址值,只是有一個(gè)引用計(jì)數(shù)會(huì)記錄指向這個(gè)地址的引用到底有幾個(gè)而已。

        當(dāng)我們進(jìn)行x = 2賦值時(shí),發(fā)現(xiàn)x的地址值變了,雖然還是x這個(gè)引用,但是其地址值卻變化了,后面的y = 2以及z = y,使得x、y和z都引用了同一個(gè)對(duì)象,即2,所以地址值都是一樣的。當(dāng)x和y都被賦值2后,1這個(gè)對(duì)象已經(jīng)沒有引用指向它了,所以1這個(gè)對(duì)象占用的內(nèi)存,即31106520地址要被“垃圾回收”,即1這個(gè)對(duì)象在內(nèi)存中已經(jīng)不存在了。最后,x進(jìn)行了加2的操作,所以創(chuàng)建了新的對(duì)象4,x引用了這個(gè)新的對(duì)象,而不再引用2這個(gè)對(duì)象。

        那么為什么稱之為不可變數(shù)據(jù)類型呢?這里的不可變大家可以理解為x引用的地址處的值是不能被改變的,也就是31106520地址處的值在沒被垃圾回收之前一直都是1,不能改變,如果要把x賦值為2,那么只能將x引用的地址從31106520變?yōu)?1106508,相當(dāng)于x = 2這個(gè)賦值又創(chuàng)建了一個(gè)對(duì)象,即2這個(gè)對(duì)象,然后x、y、z都引用了這個(gè)對(duì)象,所以int這個(gè)數(shù)據(jù)類型是不可變的,如果想對(duì)int類型的變量再次賦值,在內(nèi)存中相當(dāng)于又創(chuàng)建了一個(gè)新的對(duì)象,而不再是之前的對(duì)象。

      責(zé)編:hym
      • 會(huì)計(jì)考試
      • 建筑工程
      • 職業(yè)資格
      • 醫(yī)藥考試
      • 外語考試
      • 學(xué)歷考試