可變與不可變類型(一)


 

可變與不可變類型 

 

 

1、可變與不可變類型 

1)學python一定要記住“一切皆為對象,一切皆為對象的引用”

2所謂可變對象是指,對象的內容可變,而不可變對象是指對象內容不可變;

3可變數據類型:value值改變,id值不變;不可變數據類型:value值改變,id值也隨之改變。

4不可變immutable):int、字符串(string)float、(數值型number)、元組(tuple)

wps941F.tmp 

i = 3 (被垃圾回收)

i = 3 + 1 (實際 i = 4

從而可知,不可變對象的特征沒有變,變的只是創建了新對象,改變了變量的對象引用。

 

wps9420.tmp  

所示,因為整數為不可變,x,y,z在內存中均指向一個值為1的內存地址,也就是說,x,y,z均指向的是同一個地址

 

優點:可以減少重復的值對內存空間的占用。

缺點:如上圖所示,修改這個變量綁定的值,如果內存中沒用存在該值的內存塊,那么必須重新開辟一塊內存,把新地址與變量名綁定。而不是修改變量原來指向的內存塊的值,這給執行效率帶來一定的降低。

 

5可變mutable):字典型(dictionary)、列表型(list)

wps9421.tmp 

wps9422.tmp  

2如何確定一種數據類型是可變的還是不可變的

根據可變數據類型與不可變數據類型的概念,只需要在改變value值的同時,使用id()函數查看變量id值是否變化,就可以知道這種數據類型是可變的還是不可變的了。

1)數字

wps9423.tmp 

數字:從圖中可以看出當數字的值改變時,變量id值也改變了,所以數字是不可變數;

  python中為了減少開辟內存造成的時間開銷,對於三位內的整型數字類型數據,在開辟一塊內存空間后,后面的三位內的整型數據都放到這個內存空間中,所以三位以內的整型數字類型的id值都是相同的。

 

 

2)字符串

wps9434.tmp  

 

從圖中可以看出當字符串的值改變時,變量id值也改變了,所以字符串是不可變數據類型

 

3)布爾

wps9435.tmp 

從圖中可以看出當布爾的值改變時,變量id值也改變了,所以布爾值是不可變數據類型

 

 

3)元祖

因為元祖元素是不可修改的,所以元祖是不可變數據類型

4)列表

wps9436.tmp 

 

 從圖中可以看出,當列表中的某個元素改變時,列表的id值沒有改變,所以列表是可變數據類型

 

5)字典

wps9437.tmp 

 

 從圖中可以看出,當字典的鍵值對的value部分改變時,字典的id值沒有改變,所以字典是可變數據類型

 

 

 

 

歡迎關注小婷兒的博客:

csdnhttps://blog.csdn.net/u010986753

博客園:http://www.cnblogs.com/xxtalhr/

 

有問題請在博客下留言或加QQ群:483766429 或聯系作者本人 QQ 87605025

 

OCP培訓說明連接:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA

OCM培訓說明連接:https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA

 

小婷兒的python正在成長中,其中還有很多不足之處,隨着學習和工作的深入,會對以往的博客內容逐步改進和完善噠。

小婷兒的python正在成長中,其中還有很多不足之處,隨着學習和工作的深入,會對以往的博客內容逐步改進和完善噠。

小婷兒的python正在成長中,其中還有很多不足之處,隨着學習和工作的深入,會對以往的博客內容逐步改進和完善噠。

重要的事說三遍。。。。。。

 

 

wpsF812.tmpwpsF813.tmp  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM