引用
1、引用
一、 引用的概念
引用是一種變量指向數據存儲空間的現象
內存地址是數據在物理內存中的存儲位置
引用地址是對象在內存中的描述性地址,該地址與內存地址有區別
二、引用特徵
相同的數據在內存空間中僅佔用一個存儲空間,不一樣的變量使用相同的數據則指向相同的存儲空間。
三、獲取內存存儲地址(編號)
語法格式:
id(數據)
id(變量名)
複製代碼
代碼演示:python
a = 2
print(id(2))
print(id(a))
複製代碼
運行結果:bash
1993501472
1993501472
複製代碼
四、地址存儲特殊性
使用固定內存地址存儲數據以下:函數
-5 到 256的整數
True 和 False
由字母、數字、下滑線組成的字符串
複製代碼
使用臨時內存地址存儲數據以下:spa
小於 -5 後大於 256 的整數
全部小數
包含字母、數字、下滑線以外的字符組成的字符串
複製代碼
2、列表引用
一、列表存儲空間
無變量引用
列表保存在臨時引用地址中,該引用地址能夠反覆使用
複製代碼
有變量引用
列表保存在獨立引用地址中,該引用地址專用,每一個列表對象具備獨立的引用地址
複製代碼
二、列表存儲空間變動
一、列表變量指向引用地址,該引用地址中保存有存儲列表信息的內存地址。
二、當列表中存儲數據的空間不足時,會申請新的內存地址,並更新引用地址中對應的內存地址。
三、從新申請的內存地址將複製原始內存地址中的數據。
三、列表中的數據存儲
一、列表中存儲的數據都是數據對應的內存地址,沒有真實數據
二、列表中的數據是經過引用地址的形式查找真實數據
3、元組引用
一、元組存儲空間
空元組(無數據)
空元組指向統一的獨立引用地址,全部空元組共用同一個引用地址
複製代碼
非空元組(有數據)
非空元組保存在獨立引用地址中,每一個元組對象具備獨立引用地址
複製代碼
- 注:因爲元組不支持修改,不存在從新申請空間的問題,元組建立的同時存儲的數據已經固定,內存結構也固定。
二、元組中的數據存儲(同列表)
一、元組中存儲的數據都是數據對應的內存地址,沒有真實數據
二、元組中的數據是經過引用地址的形式查找真實數據
- 注:元組不支持修改,可是元組中的數據若是是引用類型的,對應的數據能夠在自身的內存地址中進行數據變動,對元組不影響。
4、集合引用(同列表)
一、集合存儲空間
無變量引用
集合保存在臨時引用地址中,該引用地址能夠反覆使用
複製代碼
有變量引用
集合保存在獨立引用地址中,該引用地址專用,每一個集合對象具備獨立的引用地址
複製代碼
二、集合存儲空間變動
一、集合變量指向引用地址,該引用地址中保存有存儲集合信息的內存地址。
二、當集合中存儲數據的空間不足時,會申請新的內存地址,並更新引用地址中對應的內存地址。
三、從新申請的內存地址將複製原始內存地址中的數據。
三、集合中的數據存儲
一、集合中存儲的數據都是數據對應的內存地址,沒有真實數據
二、集合中的數據是經過引用地址的形式查找真實數據
5、字典引用(同列表)
一、字典存儲空間
無變量引用
字典保存在臨時引用地址中,該引用地址能夠反覆使用
複製代碼
有變量引用
字典保存在獨立引用地址中,該引用地址專用,每一個字典對象具備獨立的引用地址
複製代碼
二、字典存儲空間變動
一、字典變量指向引用地址,該引用地址中保存有存儲字典信息的內存地址。
二、當字典中存儲數據的空間不足時,會申請新的內存地址,並更新引用地址中對應的內存地址。
3.從新申請的內存地址將複製原始內存地址中的數據。
三、字典中的數據存儲
一、字典中存儲的數據都是數據對應的內存地址,沒有真實數據
二、字典中的數據是經過引用地址的形式查找真實數據
6、對象引用
一、對象存儲空間
無變量引用
對象保存在臨時引用地址中,該引用地址能夠反覆使用
複製代碼
有變量引用
對象保存在獨立引用地址中,該引用地址專用,每一個列表對象具備獨立的引用地址
複製代碼
二、對象中的變量數據
一、對象中的變量存儲的都是對應數據的引用地址,沒有真實數據
二、對象中的變量是經過引用地址的形式查找真實數據
三、對象中的變量存儲形式是一個字典的形式,對變量的操做參照字典的操做方式,變量名爲字典的key,變量值爲字典的value
7、可變類型與不可變類型
一、基本概念
數據存儲空間中的數據能夠發生變化的數據稱爲可變類型數據
數據存儲空間中的數據不能發生變化的數據稱爲不可變類型數據
二、分類
可變類型數據
不可變類型數據
三、函數調用時的實參
函數的實參使用可變類型數據時,在函數內部對形參進行數據操做,實參將發生改變
函數的實參使用不可變類型數據時,在函數內部對形參進行數據操做,實參將不會發生改變
四、函數定義時的形參
條件1:函數形參使用默認參數
條件2:函數調用時未對默認參數傳值
條件3:函數的形參使用可變類型數據
上述3個條件同時知足時,屢次調用對應函數時,操做的形參是同一個對象
複製代碼