python學習 16 變數高階

2021-09-12 19:11:48 字數 3823 閱讀 9307

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 深...