1. 程式人生 > >Ptyhon 變數的賦值詳解

Ptyhon 變數的賦值詳解

1、固定變數賦值

Ptyhon 變數的賦值詳解
圖1
Ptyhon 變數的賦值詳解
圖2
根據上面顯示的圖1,來進行圖2的賦值操作,下面進行詳細說明。
定義變數s1 >>>s1='nihao'
定義變數s2等於s1 >>>s2=s1
列印s1的記憶體地址 >>>print(id(s1))
10164800
列印s2的記憶體地址 >>>print(id(s2))
10164800
由此可以看出,s2和s1記憶體地址一樣,同時指向‘nihao’字串。
給變數s1重新賦值 >>>s1='nihaoma'
列印s1的記憶體地址 >>>print(id(s1))
10164960
列印s2的記憶體地址 >>>print(id(s2))
10164800
由以上兩步操作可以看出,s1重新賦值以後,新的記憶體地址不在是原始的記憶體地址,而是重新指向新的'nihaoma'字串所對應的記憶體地址上,但是,s2還是原來的記憶體地址,並未變化,因此s2的值也不會更改,還是‘nihao’字串。
2、可變變數賦值
Ptyhon 變數的賦值詳解


圖3
Ptyhon 變數的賦值詳解
圖4
根據上面顯示的圖3,來進行圖4的賦值操作,下面進行詳細說明。
定義可變的L1變數>>>L1=[1,2,3,4,5]
將L1變數賦值給L2變數 >>>L2=L1
檢視L2的值 >>>L2
[1,2,3,4,5]
檢視L1的記憶體地址>>>print(id(L1))
9618816
檢視L2的記憶體地址>>>print(id(L2))
9618816
由以上可以看出,賦值操作,被賦值的變數地址和賦值的變數地址是一樣的。
L1新增>>>L1.append(6)
檢視L1和L2的值都為
[1,2,3,4,5,6]
檢視L1的記憶體地址>>>print(id(L1))
9618816
檢視L2的記憶體地址>>>print(id(L2))
9618816
由以上操作可以看出,更改後的L1記憶體地址並未改變,但是值改變了,L2的記憶體地址也沒改變,但是值改變了,所以,可變的變數如果只是單純的對資料進行更改,例如增刪改,都不會改變記憶體地址,只是值改變了。