python中數(shù)字是否為可變類(lèi)型
本文以Python3為例,包括六種數(shù)據(jù)類(lèi)型:
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)存地址)
不可變類(lèi)型:Number、String、Tuple
對(duì)不可變類(lèi)型的變量重新賦值,實(shí)際上是重新創(chuàng)建一個(gè)不可變類(lèi)型的對(duì)象,并將原來(lái)的變量重新指向新創(chuàng)建的對(duì)象(如果沒(méi)有其他變量引用原有對(duì)象的話(即引用計(jì)數(shù)為0),原有對(duì)象就會(huì)被回收)。
對(duì)于不可變類(lèi)型int,無(wú)論創(chuàng)建多少個(gè)不可變類(lèi)型,只要值相同,都指向同個(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 類(lèi)型是不可變的。
>>> i = 5>>> id(i)8791205700368>>> i += 1>>> id(i)8791205700400>>>>>> j = i>>> id(j)8791205700400>>> j6>>>
可變類(lèi)型:List、Dictionary、Set
對(duì)可變數(shù)據(jù)類(lèi)型重新賦值,并沒(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的類(lèi)型都是List,可變類(lèi)型,對(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]>>>
總而言之:
不可變類(lèi)型是指向值(Value),值不變,則對(duì)象不變;值變,則對(duì)象變。
可變數(shù)據(jù)類(lèi)型是指向名字(Name),名不變,則對(duì)象不變;名變,則對(duì)象變。
內(nèi)容擴(kuò)展:
Python中可變類(lèi)型和不可變類(lèi)型的數(shù)據(jù)?
可變類(lèi)型有l(wèi)ist,dict.不可變類(lèi)型有string,number,tuple. 當(dāng)進(jìn)行修改操作時(shí),可變類(lèi)型傳遞的是內(nèi)存中的地址,也就是說(shuō),直接修改內(nèi)存中的值,并沒(méi)有開(kāi)辟新的內(nèi)存。 不可變類(lèi)型被改變時(shí),并沒(méi)有改變?cè)瓋?nèi)存地址中的值,而是開(kāi)辟一塊新的內(nèi)存,將原地址中的值復(fù)制過(guò)去,對(duì)這塊新開(kāi)辟的內(nèi)存中的值進(jìn)行操作。到此這篇關(guān)于python中數(shù)字是否為可變類(lèi)型的文章就介紹到這了,更多相關(guān)python中數(shù)字是不可變類(lèi)型嗎內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. Java GZip 基于內(nèi)存實(shí)現(xiàn)壓縮和解壓的方法2. Springboot 全局日期格式化處理的實(shí)現(xiàn)3. 利用CSS制作3D動(dòng)畫(huà)4. .Net加密神器Eazfuscator.NET?2023.2?最新版使用教程5. jsp+servlet簡(jiǎn)單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))6. JAMon(Java Application Monitor)備忘記7. 完美解決vue 中多個(gè)echarts圖表自適應(yīng)的問(wèn)題8. SpringBoot+TestNG單元測(cè)試的實(shí)現(xiàn)9. 存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼10. idea配置jdk的操作方法
