Python:python中的可变类型和不可变类型
Python的基本數據類型大致可分為6類:
- 1.Number(數字)(bool布爾類型、int整型、float浮點型、complex復數等都歸為Number數字類型)
- 2. String(字符串)
- 3. Tuple (元組)
- 4. List(列表)
- 5. Dictionary (字典)
- 6. Sets(集合)
這6種類型又可以分為可變類型和不可變類型,其中不可變類型有:Number(數字) ?String(字符串) Tuple (元組)。可變類型有: List(列表) Dictionary (字典) Sets(集合)。
不可變數據類型:不可變數據類型的變量在第一次賦值聲明(由于是解釋型語言,python中聲明和定義是分不開的,即出現給變量賦值就會分配其相應的內存空間。)的時候, 會在內存中開辟一塊空間, 用來存放這個變量被賦的值, 存放這個值的內存空間就是內存中的一個地址, 而這個變量實際上存儲的, 并不是被賦予的這個值, 而是存放這個值所在空間的內存地址, 通過這個地址, 變量就可以在內存中取出數據了。
所謂不可變就是說, 我們不能改變這個數據在內存中的值, 所以當我們改變這個變量的賦值時, 只是在內存中重新開辟了一塊空間, 將這一條新的數據存放在這一個新的內存地址里, 而原來的那個變量就不在引用原數據的內存地址而轉為引用新數據的內存地址了。
不可變類型舉例:
也就是說a=5的時候,首先開辟了一個內存把3放進去,a只是相當于這個內存中的引用而已,而即使a=5之后,我們依然可以發現放3的內存仍然在。當然,重新運行程序的話,id(3)不一定會是同樣的值。(這是由于重新運行分配地址的原因)
可變數據類型舉例:當你第一次賦值聲明了一個可變數據類型的時候, 同樣會在內存中開辟一個空間, 并且將你所賦的數據值放在這塊內存中, 然后將這個變量指向數據所在的內存所在位置, 不同的是, 可變數據類型可以對內存中的數據進行修改, 并且不會導致變量引用地址的變化, 但是這種修改僅限于Python中的內置方法, 比如list.append(), list.remove(), dict.pop(), dict.clear()等, 如果要是進行重新賦值的操作的話, 一樣會改變變量的地址指向(即使你使用同樣的值,比如數組[1,2,3])。而且當變量重新指向了新的內存之后,之前的內存也就被自動回收了。
列表中的+=并不是先相加再賦值,而是相當于extend方法(把另外一個列表的內容的整合到當前列表中)。
hash:
參考:https://blog.csdn.net/come_from_pluto
?
總結
以上是生活随笔為你收集整理的Python:python中的可变类型和不可变类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Paper9:Fast RCNN
- 下一篇: Paper7:R-CNN