python數據結構-可變數據類型與不可變數據類型


可變數據類型:列表list和字典dict

不可變數據類型:整型int、浮點型float、字符串型string和元組tuple

python中的不可變數據類型,不允許變量的值發生變化,如果改變了變量的值,相當於是新建了一個對象,而對於相同的值的對象,在內存中則只有一個對象,內部會有一個引用計數來記錄有多少個變量引用這個對象可變數據類型,允許變量的值發生變化,即如果對變量進行append、+=等這種操作后,只是改變了變量的值,而不會新建一個對象,變量引用的對象的地址也不會變化。

函數默認參數要用元組而非列表

定義函數的默認參數的時候,形如 def foo(attrs=(1,2)): return 之類。這里設定容器類型的默認參數 attrs 使用了元組而不用列表的原因在於:列表作為一種可變類型非常的不靠譜。當腳本執行到函數定義之處的時候,解釋器會對參數表達式做一次“預演算”,並把值保存到內存之中,之后每次調用這個函數的時候,都不會再重新運算其參數表達式,而是直接從“預演算”的結果處取值(引用)。所以如果你的默認參數寫了一個列表進去,那么每次你調用這個函數時對這個列表所做的更改都會被保存下來。就像這樣:

 

>>> def biggest(n, store=[0]): store[0] = max(n, store[0]) return store[0] >>> biggest(3) 3
>>> biggest(9) 9
>>> biggest(5) 9

 


免責聲明!

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



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