本來以為 區域性變數就是在函式/def/class/lambda內部的變數,全域性變數就是在之前這些之外的變數。但是,再一次學習python atm 中應用時發現了一次特例(意外)
字典中 在函式內部改變 其部分值之後,在函式外列印字典,字典的值竟然改變了。
x =defa(x):
x["w
"] = 123x =
return
xdef
v():
c =a(x)
(x)v()
於是上網搜了一下 python 全域性變數與區域性變數定義
1.定義的函式內部的變數名如果第一次出現,且在 = 前 那麼就認為被定義的函式是區域性變數,不論是否全域性變數中是否用到該函式名
num = 10deffunc():
num = 19
print(num) #
值為19
func()
print (num) #
值為10
再者
num = 10deffunc():
num = num + 19
(num)
func()
print (num)
將報錯 :unboundlocalerror
num = 10deffunc(num):
num = num + 19
(num)
func(num)
print (num)
在函式中傳入引數則不會, 此時 num在函式中是全域性變數
2. global 宣告全域性變數
d = 6defa():
global
d
(d) d = d + 2131
defv():
c =a()
(d)v()
在函式內部宣告global之後,修改d的值,則全域性變數值改變。(此函式不能傳入引數d,否則global d則會報錯)
3.有時候想在函式內部引用全域性的變數,疏忽就會出現下列錯誤:
var = 1deffun():
(var)
var = 300
(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)
(x1,x2)
v()
x1 =x2 =
defa(x1,x2):
x1["w
"] = 123x2 =
return
x1,x2
defv():
c =a(x1,x2)
(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中...