Python 區域性變數與全域性變數

2022-08-19 13:27:13 字數 1808 閱讀 7019

本來以為 區域性變數就是在函式/def/class/lambda內部的變數,全域性變數就是在之前這些之外的變數。但是,再一次學習python atm 中應用時發現了一次特例(意外)

字典中 在函式內部改變 其部分值之後,在函式外列印字典,字典的值竟然改變了。

x = 

defa(x):

x["w

"] = 123x =

return

xdef

v():

c =a(x)

print

(x)v()

於是上網搜了一下 python 全域性變數與區域性變數定義

1.定義的函式內部的變數名如果第一次出現,且在 = 前 那麼就認為被定義的函式是區域性變數,不論是否全域性變數中是否用到該函式名

num = 10

deffunc():

num = 19

print(num) #

值為19

func()

print (num) #

值為10

再者

num = 10

deffunc():

num = num + 19

print

(num)

func()

print (num)

將報錯 :unboundlocalerror

num = 10

deffunc(num):

num = num + 19

print

(num)

func(num)

print (num)

在函式中傳入引數則不會, 此時 num在函式中是全域性變數

2. global 宣告全域性變數

d = 6

defa():

global

d

print

(d) d = d + 2131

defv():

c =a()

print

(d)v()

在函式內部宣告global之後,修改d的值,則全域性變數值改變。(此函式不能傳入引數d,否則global d則會報錯)

3.有時候想在函式內部引用全域性的變數,疏忽就會出現下列錯誤:

var = 1

deffun():

print

(var)

var = 300

print

(fun())

------------------------------------------var = 2

deffun():

var =var + 2

return

varprint(fun())

4.字典

x1 = 

x2 =

defa(x2):

x1["w

"] = 123x2 =

return

x1,x2

defv():

c =a(x2)

print

(x1,x2)

v()

x1 = 

x2 =

defa(x1,x2):

x1["w

"] = 123x2 =

return

x1,x2

defv():

c =a(x1,x2)

print

(x1,x2)

v()

輸出值:

Python 區域性變數與全域性變數

問題由來 考慮到想在執行結束後的使用者空間裡面檢視一下資料,我把data1作為全域性變數來進行處理。data1 function a1 data1 readdata function a2 data1.dealdata if name main a1 a2 此時,a2 函式沒有任何輸出,即data1...

python 全域性變數與區域性變數

目錄 一 變數作用域 二 全域性變數 區域性變數 2.1 global 和nonlocal關鍵字 python中,變數不是在 都可以訪問的,訪問許可權決定於變數是在 被賦值的。變數作用域決定了哪一部分程式可以訪問哪些特定的變數。python的作用域一共分為四種 程式查詢變數的規則為 l e g b ...

python區域性變數與全域性變數

區域性變數 區域性變數是在函式內部進行使用,無法全域性共享 全域性變數 全域性變數在函式外部進行共享使用,可以接收函式的呼叫 區域性變數 def demo1 num 1print num defdemo2 print num print會報錯,原因顯示為沒有定義num這個變數,所以證明在demo1中...