您好,登錄后才能下訂單哦!
小編給大家分享一下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 >>> j 6 >>>
可變類型: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中數字是不是不可變類型的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。