1. 程式人生 > >python回顧(十)——引用

python回顧(十)——引用

同時 內存 沒有 函數定義 函數形參 條件 類型 對象存儲 back

引用

引用概念

  引用是一種變量指向數據存儲空間的現象

  內存地址是數據在物理內存中的存儲位置

  引用地址是對象在內存中的描述性地址,該地址與內存地址有區別

引用特征

  相同的數據在內存空間中僅占用一個存儲空間,不同的變量使用相同的數據則指向相同的存儲空間

獲取內存存儲地址

  語法格式:

    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回顧(十)——引用