python中數字是否為可變類型
本文以Python3為例,包括六種數據類型:
1、數字(Number):int整型long長整型float浮點數complex復數布爾值(0和1)2、字符串(String)3、列表(List)4、元組(Tuple)5、字典(Dictionary)6、集合(Set)
通過id函數查看變量i的內存地址進行驗證(使用hex(id(i)) 可以查看16進制的內存地址)
不可變類型:Number、String、Tuple
對不可變類型的變量重新賦值,實際上是重新創建一個不可變類型的對象,并將原來的變量重新指向新創建的對象(如果沒有其他變量引用原有對象的話(即引用計數為0),原有對象就會被回收)。
對于不可變類型int,無論創建多少個不可變類型,只要值相同,都指向同個內存地址。
例如Number:
>>> number1 = 123>>> id(number1)8790928028112>>> number2 = 123>>> id(number2)8790928028112>>> number3 = 321>>> id(number3)49143760>>>
可以看到執行 i += 1 時,內存地址都會變化,因為int 類型是不可變的。
>>> i = 5>>> id(i)8791205700368>>> i += 1>>> id(i)8791205700400>>>>>> j = i>>> id(j)8791205700400>>> j6>>>
可變類型:List、Dictionary、Set
對可變數據類型重新賦值,并沒有創建新的對象。
例如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>>>
如果執行list1=list2,因為list1、list2指向同個內存地址,而list1、list2的類型都是List,可變類型,對list1、list2任意一個List進行修改,都會影響另外一個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),值不變,則對象不變;值變,則對象變。
可變數據類型是指向名字(Name),名不變,則對象不變;名變,則對象變。
內容擴展:
Python中可變類型和不可變類型的數據?
可變類型有list,dict.不可變類型有string,number,tuple. 當進行修改操作時,可變類型傳遞的是內存中的地址,也就是說,直接修改內存中的值,并沒有開辟新的內存。 不可變類型被改變時,并沒有改變原內存地址中的值,而是開辟一塊新的內存,將原地址中的值復制過去,對這塊新開辟的內存中的值進行操作。到此這篇關于python中數字是否為可變類型的文章就介紹到這了,更多相關python中數字是不可變類型嗎內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章: