變數進階(理解)
阿新 • • 發佈:2020-12-30
目標
• 變數的引用
•可變和不可變型別
•區域性變數和全域性變數
01.變數的引用
•變數 和 資料 都是儲存在 記憶體 中的
•在 python 中 函式 的 引數傳遞 以及 返回值 都是靠 引用 傳遞的
1.1引用的概念
在 python 中
•變數 和 資料 是分開儲存的
•資料 儲存在記憶體中的一個位置
•變數 中儲存著資料在記憶體中地址
•變數 中記錄資料的地址,就叫做 引用
•使用 id() 函式可以檢視變數中儲存資料所在的 記憶體地址
注意:如果變數已經被定義,當給一個變數賦值時,本質上是 修改了資料的引用
•變數 不再 對之前的資料引用
•變數 改為 對新賦值的資料引用
1.2 變數引用 的示例
在 python 中,變數的名字類似於 便籤紙 貼在 資料 上
•定義一個整數變數 a ,並且賦值為 1
•將變數 a 賦值為 2
•定義一個整數變數 b,並且將變數 a 的值賦值給 b
變數b是第二個貼在數字2上的標籤
1.3 函式的引數和返回值的傳遞
def test(num): print("在函式內部%d對應的記憶體是%d" %(num,id(num)) ) # 1.定義一個字串變數 result = "hello" print("函式要返回資料的記憶體地址是%d" % id(result)) # 2.將字串變數返回 returnresult # 1.定義一個數字的變數 a = 10 print("a變數儲存資料的記憶體地址是%d" % id(a)) # 2.呼叫 test 函式,本質上傳遞的是實參儲存資料的引用,而不是實參儲存的資料 # 注意:如果函式有返回值,但是沒有定義變數接收,程式不會報錯,但是無法獲得返回結果 r=test(a) print("%s的記憶體地址是%d" %(r,id(r)))
02. 可變和不可變型別
•不可變型別,記憶體中的資料不允許被修改
數字型別 int,bool,float,complex,long(2.x)
字串 str
元組 tuple
•可變型別,記憶體中的資料可以被修改
列表 list
字典 dict