python的可變變量和不可變變量


可變類型和不可變類型的區別
1、可變類型,值可以改變:
list列表
dict字典
可變類型,添加或者修改數據時,變量對應的內存地址不會改變。也就是可變類型,一直在引用原來的內存地址。
注意,如果是重新賦值,內存地址就會發生改變。
而del 變量名 則只是刪除一個指針,不刪除變量。


2、不可變類型,值不可以改變:
數值類型int、long、bool、float
字符串str
元組tuple
不可變類型,一旦被重新賦值,變量對應的內存地址就會發生改變。


提示:
1. 不可變類型的數據作為實參傳遞, 修改形參不影響實參
2. 可變類型的數據作為實參傳遞, 修改形參會導致實參跟着變化。但是形參賦值不會改變實參。

代碼示例:

def selfAdd(a):
    '''
    自己增加
    '''
    a += a # 運算符改變參數的值
    # a = a + a # 賦值改變參數的值。形參賦值,不會改變可變類型的實參。

if __name__ == '__main__':
    print("不可變類型")
    a_int=1
    print(a_int)
    selfAdd(a_int)
    print(a_int)

    print("可變類型")
    a_list=[1,2]
    print(a_list)
    selfAdd(a_list)
    print(a_list)

  

輸出:

不可變類型
1
1
可變類型
[1, 2]
[1, 2, 1, 2]

 

 

延伸:
1 、id()
查看變量的內存地址。
id(c)
2 、引用計數
一個變量值,有多少個變量名綁定在上面,引用計數就為幾。
import sys
sys.getrefcount(a) #該命令本身也算一個引用。所以引用數會多1個
512以內的數字,不適用。


免責聲明!

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



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