python回顧(十)——引用
引用
引用概念
引用是一種變量指向數據存儲空間的現象
內存地址是數據在物理內存中的存儲位置
引用地址是對象在內存中的描述性地址,該地址與內存地址有區別
引用特征
相同的數據在內存空間中僅占用一個存儲空間,不同的變量使用相同的數據則指向相同的存儲空間
獲取內存存儲地址
語法格式:
id(數據)
id(變量名)
地址存儲特殊性
使用固定內存地址存儲數據如下:
-5到256的整數
True和False
由字母、數字、下滑線組成的字符串
使用臨時內存地址存儲數據如下:
小於-5後大於256的整數
所有小數
包含字母、數字、下滑線之外的字符組成的字符串
列表引用
列表存儲空間
無變量引用:列表保存在臨時引用地址中,該引用地址可以反復使用
有變量引用:列表保存在獨立引用地址中,該引用地址專用,每個列表對象具有獨立的引用地址
列表存儲空間變更
1.列表變量指向引用地址,該引用地址中保存有存儲列表信息的內存地址。
2.當列表中存儲數據的空間不足時,會申請新的內存地址,並更新引用地址中對應的內存地址。
3.重新申請的內存地址將復制原始內存地址中的數據。
列表中的數據存儲
1.列表中存儲的數據都是數據對應的內存地址,沒有真實數據
2.列表中的數據是通過引用地址
元組引用
元組存儲空間
空元組(無數據):空元組指向統一的獨立引用地址,所有空元組共用同一個引用地址
非空元組(有數據):非空元組保存在獨立引用地址中,每個元組對象具有獨立引用地址
註:由於元組不支持修改,不存在重新申請空間的問題,元組創建的同時存儲的數據已經固定,內存結構也固定。
元組中的數據存儲(同列表)
1.元組中存儲的數據都是數據對應的內存地址,沒有真實數據
2.元組中的數據是通過引用地址的形式查找真實數據
註:元組不支持修改,但是元組中的數據如果是引用類型的,對應的數據可以在自身的內存地址中進行數據變更,對元組不影響
集合引用(同列表)
集合存儲空間
無變量引用:集合保存在臨時引用地址中,該引用地址可以反復使用
有變量引用:集合保存在獨立引用地址中,該引用地址專用,每個集合對象具有獨立的引用地址
集合存儲空間變更
1.集合變量指向引用地址,該引用地址中保存有存儲集合信息的內存地址
2.當集合中存儲數據的空間不足時,會申請新的內存地址,並更新引用地址中對應的內存地址
3.重新申請的內存地址將復制原始內存地址中的數據。
集合中的數據存儲
1.集合中存儲的數據都是數據對應的內存地址,沒有真實數據
2.集合中的數據是通過引用地址的形式查找真實數據
字典引用(同列表)
字典存儲空間
無變量引用:字典保存在臨時引用地址中,該引用地址可以反復使用
有變量引用:字典保存在獨立引用地址中,該引用地址專用,每個字典對象具有獨立的引用地址
字典存儲空間變更
1.字典變量指向引用地址,該引用地址中保存有存儲字典信息的內存地址。
2.當字典中存儲數據的空間不足時,會申請新的內存地址,並更新引用地址中對應的內存地址
3.重新申請的內存地址將復制原始內存地址中的數據。
字典中的數據存儲
1.字典中存儲的數據都是數據對應的內存地址,沒有真實數據
2.字典中的數據是通過引用地址的形式查找真實數據
對象引用
對象存儲空間
無變量引用:對象保存在臨時引用地址中,該引用地址可以反復使用
有變量引用:對象保存在獨立引用地址中,該引用地址專用,每個對象具有獨立的引用地址
對象中的變量數據
1.對象中的變量存儲的都是對應數據的引用地址,沒有真實數據
2.對象中的變量是通過引用地址的形式查找真實數據
3.對象中的變量存儲形式是一個字典的形式,對變量的操作參照字典的操作方式,變量名為字典的key,變量值為字典的value
可變類型與不可變類型
基本概念
數據存儲空間中的數據可以發生變化的數據稱為可變類型數據
數據存儲空間中的數據不能發生變化的數據稱為不可變類型數據
分類
可變類型數據:列表,集合,字典,對象
不可變類型數據:數值,字符串,布爾,元組
函數調用時的實參
函數的實參使用可變類型數據時,在函數內部對形參進行數據操作,實參將發生改變
函數的實參使用不可變類型數據時,在函數內部對形參進行數據操作,實參將不會發生改變
函數定義時的形參
條件1:函數形參使用默認參數
條件2:函數調用時未對默認參數傳值
條件3:函數的形參使用可變類型數據
上述3個條件同時滿足時,多次調用對應函數時,操作的形參是同一個對象
python回顧(十)——引用