- 函數中使用全局變量
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關鍵字申明變量為外層函數的變量。
轉載于:https://www.cnblogs.com/bryant24/p/11437392.html