python中數(shù)字是否為可變類型
本文以Python3為例,包括六種數(shù)據(jù)類型:
1、數(shù)字(Number): int整型 long長(zhǎng)整型 float浮點(diǎn)數(shù) complex復(fù)數(shù) 布爾值(0和1) 2、字符串(String) 3、列表(List) 4、元組(Tuple) 5、字典(Dictionary) 6、集合(Set)
通過(guò)id函數(shù)查看變量i的內(nèi)存地址進(jìn)行驗(yàn)證(使用hex(id(i)) 可以查看16進(jìn)制的內(nèi)存地址)
不可變類型:Number、String、Tuple
對(duì)不可變類型的變量重新賦值,實(shí)際上是重新創(chuàng)建一個(gè)不可變類型的對(duì)象,并將原來(lái)的變量重新指向新創(chuàng)建的對(duì)象(如果沒(méi)有其他變量引用原有對(duì)象的話(即引用計(jì)數(shù)為0),原有對(duì)象就會(huì)被回收)。
對(duì)于不可變類型int,無(wú)論創(chuàng)建多少個(gè)不可變類型,只要值相同,都指向同個(gè)內(nèi)存地址。
例如Number:
>>> number1 = 123 >>> id(number1) 8790928028112 >>> number2 = 123 >>> id(number2) 8790928028112 >>> number3 = 321 >>> id(number3) 49143760 >>>
可以看到執(zhí)行 i += 1 時(shí),內(nèi)存地址都會(huì)變化,因?yàn)閕nt 類型是不可變的。
>>> i = 5 >>> id(i) 8791205700368 >>> i += 1 >>> id(i) 8791205700400 >>> >>> j = i >>> id(j) 8791205700400 >>> j 6 >>>
可變類型:List、Dictionary、Set
對(duì)可變數(shù)據(jù)類型重新賦值,并沒(méi)有創(chuàng)建新的對(duì)象。
例如List:
>>> list1 = [1,2,3,4,5] >>> id(list1) 49307976 >>> list2 = [1,2,3,4,5] >>> id(list2) 49307784 >>> list1.append(123) >>> list1 [1, 2, 3, 4, 5, 123] >>> id(list1) 49307976 >>>
如果執(zhí)行l(wèi)ist1=list2,因?yàn)閘ist1、list2指向同個(gè)內(nèi)存地址,而list1、list2的類型都是List,可變類型,對(duì)list1、list2任意一個(gè)List進(jìn)行修改,都會(huì)影響另外一個(gè)List的值。
>>> list1 [1, 2, 3, 4, 5, 123] >>> id(list1) 49307976 >>> >>> list1 = list2 >>> id(list1) 49307784 >>> id(list2) 49307784 >>> list2 [1, 2, 3, 4, 5] >>> list2.append(456) >>> list1 [1, 2, 3, 4, 5, 456] >>> list2 [1, 2, 3, 4, 5, 456] >>>
總而言之:
不可變類型是指向值(Value),值不變,則對(duì)象不變;值變,則對(duì)象變。
可變數(shù)據(jù)類型是指向名字(Name),名不變,則對(duì)象不變;名變,則對(duì)象變。
內(nèi)容擴(kuò)展:
Python中可變類型和不可變類型的數(shù)據(jù)?
- 可變類型有l(wèi)ist,dict.不可變類型有string,number,tuple.
- 當(dāng)進(jìn)行修改操作時(shí),可變類型傳遞的是內(nèi)存中的地址,也就是說(shuō),直接修改內(nèi)存中的值,并沒(méi)有開(kāi)辟新的內(nèi)存。
- 不可變類型被改變時(shí),并沒(méi)有改變?cè)瓋?nèi)存地址中的值,而是開(kāi)辟一塊新的內(nèi)存,將原地址中的值復(fù)制過(guò)去,對(duì)這塊新開(kāi)辟的內(nèi)存中的值進(jìn)行操作。
到此這篇關(guān)于python中數(shù)字是否為可變類型的文章就介紹到這了,更多相關(guān)python中數(shù)字是不可變類型嗎內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
windows系統(tǒng)中Python多版本與jupyter notebook使用虛擬環(huán)境的過(guò)程
這篇文章主要介紹了windows中Python多版本與jupyter notebook中使用虛擬環(huán)境的安裝過(guò)程,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05Python采集王者最低戰(zhàn)力信息實(shí)戰(zhàn)示例
這篇文章主要為大家介紹了Python采集王者最低戰(zhàn)力信息實(shí)戰(zhàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04selenium+python自動(dòng)化測(cè)試之環(huán)境搭建
這篇文章主要介紹了selenium+python自動(dòng)化測(cè)試之環(huán)境搭建,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01selenium設(shè)置proxy、headers的方法(phantomjs、Chrome、Firefox)
這篇文章主要介紹了selenium設(shè)置proxy、headers的方法(phantomjs、Chrome、Firefox),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11Python3讀取Excel數(shù)據(jù)存入MySQL的方法
今天小編就為大家分享一篇Python3讀取Excel數(shù)據(jù)存入MySQL的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05