亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python 可變類(lèi)型和不可變類(lèi)型及引用過(guò)程解析

 更新時(shí)間:2019年09月27日 08:28:19   作者:tony86  
這篇文章主要介紹了Python 可變類(lèi)型和不可變類(lèi)型,以及其引用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

在Python中定義一個(gè)數(shù)據(jù)便在內(nèi)存中開(kāi)辟一片空間來(lái)存儲(chǔ)這個(gè)變量的值,這塊已經(jīng)被分配的內(nèi)存空間便會(huì)有一個(gè)內(nèi)存地址。訪問(wèn)這塊內(nèi)存需要用到變量名,變量名實(shí)際存儲(chǔ)的是變量的地址在內(nèi)存中的地址,但是使用print()函數(shù)得到的確實(shí)這塊內(nèi)存中實(shí)際的地址。這個(gè)就當(dāng)成規(guī)定就好,沒(méi)必要糾結(jié)。

獲得變量在內(nèi)存中的地址,可以使用id()函數(shù)。

常規(guī)使用

變量之間的賦值其實(shí)是把一個(gè)變量的內(nèi)存地址傳遞給另一個(gè)變量,這樣兩個(gè)變量便都指向內(nèi)存中的同一塊空間,因此這兩個(gè)變量的之是相等的

a = 1
b = a
print("a:%d  b:%d" % (a,b))
print(id(a))
print(id(b))
結(jié)果:
a:1  b:1
1711072016

此時(shí)如果有第三個(gè)變量c的值與a的相等,那么c的地址與a的地址一樣。這一點(diǎn)請(qǐng)大家牢記。

a = 1
c = 1
print("a:%d  c:%d" % (a,c))
print(id(a))
print(id(c))
結(jié)果:
a:1  c:1
1711072016

此時(shí)如果修改變量c的值,那么會(huì)在內(nèi)存中新開(kāi)辟一塊內(nèi)存來(lái)存儲(chǔ)這個(gè)變量,這塊新的內(nèi)存地址將會(huì)賦值給c。

a = 1
c = 1
c = 2
print("a:%d  c:%d" % (a,c))
print(id(a))
print(id(c))
結(jié)果:
a:1  c:2
1711072032

基本數(shù)據(jù)類(lèi)型作為函數(shù)參數(shù)

基本數(shù)據(jù)類(lèi)型作為函數(shù)實(shí)參同樣是這個(gè)道理。

a = 1
print(id(a))
def func(x):
  print(id(x))
  x = 2
  print(id(x))
 
func(a)
結(jié)果:
1711072016

列表、字典等高級(jí)數(shù)據(jù)類(lèi)型的引用

列表字典等高級(jí)數(shù)據(jù)類(lèi)型的變量名同樣存儲(chǔ)的變量的實(shí)際地址,一個(gè)列表名賦值給另一個(gè)變量,那么這兩個(gè)變量便指向內(nèi)存中的同一塊地址。

list1 = [1,2,3]
list2 = list1
print(list1,list2)
print(id(list1),id(list2))
結(jié)果:
[1, 2, 3] [1, 2, 3]
57931896

高級(jí)數(shù)據(jù)類(lèi)型在每集加載進(jìn)內(nèi)存的時(shí)候內(nèi)存地址與上一次可能會(huì)不同。

此時(shí)如果修改list2,也會(huì)影響list1的值,但是兩個(gè)變量在內(nèi)存中的地址還是不變的。這一點(diǎn)是與基本數(shù)據(jù)類(lèi)型不一樣的。

list1 = [1,2,3]
list2 = list1
print(list1,list2)
print(id(list1),id(list2))
list2.append(4)
print(list1,list2)
print(id(list1),id(list2))
 
結(jié)果:
[1, 2, 3] [1, 2, 3]
43841656
[1, 2, 3, 4] [1, 2, 3, 4]
43841656

此時(shí)如果有第三個(gè)列表list3的值也是[1,2,3,4],可以推測(cè)list3的地址與list1的地址應(yīng)該是一樣的,但是事實(shí)并非如此。如果有第三個(gè)列表list3的值也是[1,2,3,4],相當(dāng)于在內(nèi)存中新開(kāi)辟一塊內(nèi)存來(lái)存儲(chǔ)這個(gè)值。

list1 = [1,2,3]
list2 = list1
list3 = [1,2,3]
print(list1,list2,list3)
print(id(list1),id(list2),id(list3))
結(jié)果:
[1, 2, 3] [1, 2, 3] [1, 2, 3]
16775288 16776768

可變數(shù)據(jù)類(lèi)型與不可變數(shù)據(jù)類(lèi)型

在python中哪些是可變數(shù)據(jù)類(lèi)型,哪些是不可變數(shù)據(jù)類(lèi)型??勺償?shù)據(jù)類(lèi)型:列表list和字典dict;不可變數(shù)據(jù)類(lèi)型:整型int、浮點(diǎn)型float、字符串型string和元組tuple。

用一句話(huà)來(lái)概括上述過(guò)程就是:“python中的不可變數(shù)據(jù)類(lèi)型,不允許變量的值發(fā)生變化,如果改變了變量的值,相當(dāng)于是新建了一個(gè)對(duì)象,而對(duì)于相同的值的對(duì)象,在內(nèi)存中則只有一個(gè)對(duì)象,內(nèi)部會(huì)有一個(gè)引用計(jì)數(shù)來(lái)記錄有多少個(gè)變量引用這個(gè)對(duì)象;可變數(shù)據(jù)類(lèi)型,允許變量的值發(fā)生變化,即如果對(duì)變量進(jìn)行append、+=等這種操作后,只是改變了變量的值,而不會(huì)新建一個(gè)對(duì)象,變量引用的對(duì)象的地址也不會(huì)變化,不過(guò)對(duì)于相同的值的不同對(duì)象,在內(nèi)存中則會(huì)存在不同的對(duì)象,即每個(gè)對(duì)象都有自己的地址,相當(dāng)于內(nèi)存中對(duì)于同值的對(duì)象保存了多份,這里不存在引用計(jì)數(shù),是實(shí)實(shí)在在的對(duì)象。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中super()函數(shù)的理解與基本使用

    python中super()函數(shù)的理解與基本使用

    super( )函數(shù)是用來(lái)調(diào)用父類(lèi)的一個(gè)方法,super( )函數(shù)還用來(lái)解決多重繼承的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于python中super()函數(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • pip search報(bào)錯(cuò)問(wèn)題及解決

    pip search報(bào)錯(cuò)問(wèn)題及解決

    這篇文章主要介紹了pip search報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python?pyecharts?Map地圖數(shù)據(jù)不顯示的原因及完美解決

    Python?pyecharts?Map地圖數(shù)據(jù)不顯示的原因及完美解決

    這篇文章主要給大家介紹了關(guān)于Python?pyecharts?Map地圖數(shù)據(jù)不顯示的原因及解決辦法,pyecharts是一款將python與echarts結(jié)合的強(qiáng)大的數(shù)據(jù)可視化工具,文中通過(guò)圖文以及代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Python壓縮解壓縮zip文件及破解zip文件密碼的方法

    Python壓縮解壓縮zip文件及破解zip文件密碼的方法

    這篇文章主要介紹了Python壓縮解壓縮zip文件及嘗試破解zip文件密碼的方法,給出了一個(gè)使用zipfile模塊的簡(jiǎn)單示例,需要的朋友可以參考下
    2015-11-11
  • Python代碼風(fēng)格與編程習(xí)慣重要嗎?

    Python代碼風(fēng)格與編程習(xí)慣重要嗎?

    實(shí)現(xiàn)高內(nèi)聚,低耦合、結(jié)構(gòu)清晰不臃腫、可讀性高、數(shù)據(jù)冗余性低、高復(fù)用、易擴(kuò)展的代碼,并非易事.上到設(shè)計(jì)模式,下到某個(gè)類(lèi)、方法、函數(shù)的構(gòu)造.在這里我分享一下我自己的代碼設(shè)計(jì),編寫(xiě)風(fēng)格,讓我們互相學(xué)習(xí),需要的朋友可以參考下
    2021-06-06
  • python中計(jì)算一個(gè)列表中連續(xù)相同的元素個(gè)數(shù)方法

    python中計(jì)算一個(gè)列表中連續(xù)相同的元素個(gè)數(shù)方法

    今天小編就為大家分享一篇python中計(jì)算一個(gè)列表中連續(xù)相同的元素個(gè)數(shù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Python實(shí)現(xiàn)程序判斷季節(jié)的代碼示例

    Python實(shí)現(xiàn)程序判斷季節(jié)的代碼示例

    今天小編就為大家分享一篇關(guān)于Python實(shí)現(xiàn)程序判斷季節(jié)的代碼示例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • Boston數(shù)據(jù)集預(yù)測(cè)放假及應(yīng)用優(yōu)缺點(diǎn)評(píng)估

    Boston數(shù)據(jù)集預(yù)測(cè)放假及應(yīng)用優(yōu)缺點(diǎn)評(píng)估

    這篇文章主要為大家介紹了Boston數(shù)據(jù)集預(yù)測(cè)放假及應(yīng)用優(yōu)缺點(diǎn)評(píng)估,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 使用python獲取cpu每秒的使用率

    使用python獲取cpu每秒的使用率

    這篇文章主要介紹了使用python獲取cpu每秒的使用率,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python之pkl文件的用法及說(shuō)明

    python之pkl文件的用法及說(shuō)明

    這篇文章主要介紹了python之pkl文件的用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論