02. 可變和不可變型別
03. 區域性變數和全域性變數
3.2 全域性變數
在python
中
注意:如果變數已經被定義,當給乙個變數賦值的時候,本質上是修改了資料的引用在
python
中,函式的實參/返回值都是是靠引用來傳遞來的
def
test
(num)
:print
("-"*50
)print
("%d 在函式內的記憶體位址是 %x"
%(num,
id(num)))
result =
100print
("返回值 %d 在記憶體中的位址是 %x"
%(result,
id(result)))
print
("-"*50
)return result
a =10
print
("呼叫函式前 記憶體位址是 %x"%id
(a))
r = test(a)
print
("呼叫函式後 實參記憶體位址是 %x"%id
(a))
print
("呼叫函式後 返回值記憶體位址是 %x"%id
(r))
可變型別,記憶體中的資料可以被修改:
a =
1a =
"hello"
a =[1,
2,3]
a =[3,
2,1]
demo_list =[1
,2,3
]print
("定義列表後的記憶體位址 %d"%id
(demo_list)
)999
)demo_list.pop(0)
demo_list.remove(2)
demo_list[0]
=10print
("修改資料後的記憶體位址 %d"%id
(demo_list)
)demo_dict =
print
("定義字典後的記憶體位址 %d"%id
(demo_dict)
)demo_dict[
"age"]=
18demo_dict.pop(
"name"
)demo_dict[
"name"]=
"老王"
print
("修改資料後的記憶體位址 %d"%id
(demo_dict)
)
注意:字典的key
只能使用不可變型別的資料
注意
可變型別的資料變化,是通過方法來實現的
如果給乙個可變型別的變數,賦值了乙個新的資料,引用會修改
雜湊
是一種演算法,其作用就是提取資料的特徵碼(指紋)在python
中,設定字典的鍵值對時,會首先對key
進行hash
已決定如何在記憶體中儲存字典的資料,以方便後續對字典的操作:增、刪、改、查
區域性變數的作用
def
demo1()
: num =
10print
(num)
num =
20print
("修改後 %d"
% num)
defdemo2()
: num =
100print
(num)
demo1(
)demo2(
)print
("over"
)
區域性變數的生命週期# 定義乙個全域性變數
num =
10def
demo1()
:print
(num)
defdemo2()
:print
(num)
demo1(
)demo2(
)print
("over"
)
注意:函式執行時,需要處理變數時會:
首先查詢函式內部是否存在指定名稱 的區域性變數,如果有,直接使用如果沒有,查詢函式外部是否存在指定名稱 的全域性變數,如果有,直接使用如果還沒有,程式報錯!
1) 函式不能直接修改全域性變數的引用
num =
10def
demo1()
:print
("demo1"
+"-"*50
)# 只是定義了乙個區域性變數,不會修改到全域性變數,只是變數名相同而已
num =
100print
(num)
defdemo2()
:print
("demo2"
+"-"*50
)print
(num)
demo1(
)demo2(
)print
("over"
)
注意:只是在函式內部定義了乙個區域性變數而已,只是變數名相同 —— 在函式內部不能直接修改全域性變數的值2) 在函式內部修改全域性變數的值
num =
10def
demo1()
:print
("demo1"
+"-"*50
)# global 關鍵字,告訴 python 直譯器 num 是乙個全域性變數
global num
num =
100print
(num)
defdemo2()
:print
("demo2"
+"-"*50
)print
(num)
demo1(
)demo2(
)print
("over"
)
3) 全域性變數定義的位置a =
10def
demo()
:print
("%d"
% a)
print
("%d"
% b)
print
("%d"
% c)
b =20
demo(
)c =
30
注意
4) 全域性變數命名的建議
Python學習筆記 變數的高階
變數高階 1 變數的引用 變數和資料都是儲存在記憶體中的 在python中函式的引數傳遞以及返回值都是靠引用傳遞的 2 引用的概念 在python中 變數和資料都是分開儲存的 資料儲存在記憶體中的乙個位置 變數儲存著資料在記憶體中的位址 變數中記錄資料的位址,就叫做引用 使用id 函式可以檢視變數中...
python學習筆記 10 變數高階
在python中 在python中,變數的名字類似於便簽紙貼在資料上。a 1print id a b a print id b a 2 print id a b a print id b output 140709511300768 140709511300768 140709511300800 1...
python高階 深淺拷貝 16
淺拷貝是對乙個物件的頂層拷貝,通俗地講就是 拷貝了引用,並沒有拷貝內容。a 1,2,3 print id a b aprint b print id b print a print b 執行結果為 1965053928072 1,2,3 1965053928072 1,2,3,4 1,2,3,4 深...