python-引用

python小胡發表於2018-12-18

引用

一、引用

1、 引用的概念
引用是一種變數指向資料儲存空間的現象
記憶體地址是資料在實體記憶體中的儲存位置
引用地址是物件在記憶體中的描述性地址,該地址與記憶體地址有區別
2、引用特徵
相同的資料在記憶體空間中僅佔用一個儲存空間,不同的變數使用相同的資料則指向相同的儲存空間。
3、獲取記憶體儲存地址(編號)
語法格式:
id(資料)
id(變數名)
複製程式碼

程式碼演示:

a = 2
print(id(2))
print(id(a))
複製程式碼

執行結果:

1993501472
1993501472
複製程式碼
4、地址儲存特殊性

使用固定記憶體地址儲存資料如下:

-5 到 256的整數
True 和 False
由字母、數字、下滑線組成的字串
複製程式碼

使用臨時記憶體地址儲存資料如下:

小於 -5 後大於 256 的整數
所有小數
包含字母、數字、下滑線之外的字元組成的字串
複製程式碼

二、列表引用

1、列表儲存空間
無變數引用
列表儲存在臨時引用地址中,該引用地址可以反覆使用
複製程式碼
有變數引用
列表儲存在獨立引用地址中,該引用地址專用,每個列表物件具有獨立的引用地址
複製程式碼
2、列表儲存空間變更
1、列表變數指向引用地址,該引用地址中儲存有儲存列表資訊的記憶體地址。
2、當列表中儲存資料的空間不足時,會申請新的記憶體地址,並更新引用地址中對應的記憶體地址。
3、重新申請的記憶體地址將複製原始記憶體地址中的資料。
3、列表中的資料儲存
1、列表中儲存的資料都是資料對應的記憶體地址,沒有真實資料
2、列表中的資料是通過引用地址的形式查詢真實資料

三、元組引用

1、元組儲存空間
空元組(無資料)
空元組指向統一的獨立引用地址,所有空元組共用同一個引用地址
複製程式碼
非空元組(有資料)
非空元組儲存在獨立引用地址中,每個元組物件具有獨立引用地址
複製程式碼
  • 注:由於元組不支援修改,不存在重新申請空間的問題,元組建立的同時儲存的資料已經固定,記憶體結構也固定。
2、元組中的資料儲存(同列表)
1、元組中儲存的資料都是資料對應的記憶體地址,沒有真實資料
2、元組中的資料是通過引用地址的形式查詢真實資料
  • 注:元組不支援修改,但是元組中的資料如果是引用型別的,對應的資料可以在自身的記憶體地址中進行資料變更,對元組不影響。

四、集合引用(同列表)

1、集合儲存空間
無變數引用
集合儲存在臨時引用地址中,該引用地址可以反覆使用
複製程式碼
有變數引用
集合儲存在獨立引用地址中,該引用地址專用,每個集合物件具有獨立的引用地址
複製程式碼
2、集合儲存空間變更
1、集合變數指向引用地址,該引用地址中儲存有儲存集合資訊的記憶體地址。
2、當集合中儲存資料的空間不足時,會申請新的記憶體地址,並更新引用地址中對應的記憶體地址。
3、重新申請的記憶體地址將複製原始記憶體地址中的資料。
3、集合中的資料儲存
1、集合中儲存的資料都是資料對應的記憶體地址,沒有真實資料
2、集合中的資料是通過引用地址的形式查詢真實資料

五、字典引用(同列表)

1、字典儲存空間
無變數引用
字典儲存在臨時引用地址中,該引用地址可以反覆使用
複製程式碼
有變數引用
字典儲存在獨立引用地址中,該引用地址專用,每個字典物件具有獨立的引用地址
複製程式碼
2、字典儲存空間變更
1、字典變數指向引用地址,該引用地址中儲存有儲存字典資訊的記憶體地址。
2、當字典中儲存資料的空間不足時,會申請新的記憶體地址,並更新引用地址中對應的記憶體地址。
3.重新申請的記憶體地址將複製原始記憶體地址中的資料。
3、字典中的資料儲存
1、字典中儲存的資料都是資料對應的記憶體地址,沒有真實資料
2、字典中的資料是通過引用地址的形式查詢真實資料

六、物件引用

1、物件儲存空間
無變數引用
物件儲存在臨時引用地址中,該引用地址可以反覆使用
複製程式碼
有變數引用
物件儲存在獨立引用地址中,該引用地址專用,每個列表物件具有獨立的引用地址
複製程式碼
2、物件中的變數資料
1、物件中的變數儲存的都是對應資料的引用地址,沒有真實資料
2、物件中的變數是通過引用地址的形式查詢真實資料
3、物件中的變數儲存形式是一個字典的形式,對變數的操作參照字典的操作方式,變數名為字典的key,變數值為字典的value

七、可變型別與不可變型別

1、基本概念
資料儲存空間中的資料可以發生變化的資料稱為可變型別資料
資料儲存空間中的資料不能發生變化的資料稱為不可變型別資料
2、分類
可變型別資料
  • 列表
  • 集合
  • 字典
  • 物件
不可變型別資料
  • 數值
  • 字串
  • 布林
  • 元組
3、函式呼叫時的實參
函式的實參使用可變型別資料時,在函式內部對形參進行資料操作,實參將發生改變
函式的實參使用不可變型別資料時,在函式內部對形參進行資料操作,實參將不會發生改變
4、函式定義時的形參
條件1:函式形參使用預設引數
條件2:函式呼叫時未對預設引數傳值
條件3:函式的形參使用可變型別資料
上述3個條件同時滿足時,多次呼叫對應函式時,操作的形參是同一個物件 
複製程式碼

相關文章