函數中使用全局變數 執行fun()後返回值為:500 a, b使用的是全局變數的值。 函數中覆蓋全局變數 執行fun()後返回值為:50 a, b使用的是局部變數的值。 函數中修改改全局變數 執行fun()後返回值為:110 a使用的是全局變數a=100的值, b使用的是函數func修改後b的值10 ...
- 函數中使用全局變數
a = 100
b = 200
def func():
def sub():
return b
return a + b + sub()
執行fun()後返回值為:500
a, b使用的是全局變數的值。
- 函數中覆蓋全局變數
a = 100
b = 200
def func():
a = 10
b = 20
def sub():
return b
return a + b + sub()
執行fun()後返回值為:50
a, b使用的是局部變數的值。
- 函數中修改改全局變數
a = 100
b = 200
def func():
global a
b = 20
def sub():
nonlocal b
b = 10
sub()
return a + b
執行fun()後返回值為:110
a使用的是全局變數a=100的值, b使用的是函數func修改後b的值10。
- 另一個例子
def scope_test():
def do_local():
spam = "local spam"
def do_nonlocal():
nonlocal spam
spam = "nonlocal spam"
def do_global():
global spam
spam = "global spam"
spam = "test spam"
do_local()
print("After local assignment:", spam)
do_nonlocal()
print("After nonlocal assignment:", spam)
do_global()
print("After global assignment:", spam)
scope_test()
print("In global scope:", spam)
結果:
After local assignment: test spam
After nonlocal assignment: nonlocal spam
After global assignment: nonlocal spam
In global scope: global spam
- 總結
函數中global關鍵字用於申明變數為全局變數,在模塊中定義的變數預設自動為全局變數。
閉包函數中使用nonlocal關鍵字申明變數為外層函數的變數。