關於作用於,nonlocal關鍵字用來在函數或其他作用域中使用外層(非全局)變量。聲明全局變量,如果在局部要對全局變量修改,需要在局部也要先聲明該全局變量。通過下面的例子體會一下。用python幫助文件中的例子做對照說明:
#局部變量
def scope_test():
def do_local():
spam="local spam"
spam="test spam"
do_local()
print("After local assignment:",spam)
scope_test()#"test spam"
#nonlocal關鍵字用來在函數或其他作用域中使用外層(非全局)變量。
def scope_test1():
def do_nonlocal():
nonlocal spam
spam="nonlocal spam"
spam="test spam"
do_nonlocal()#改變上層變量的值
print("After nonlocal assignment:",spam)
scope_test1()#"nonlocal spam"
#聲明全局變量,如果在局部要對全局變量修改,需要在局部也要先聲明該全局變量
def scope_test2():
def do_global():
global spam
spam="global spam"
spam="test spam"
do_global()#改變全局變量的值,不改變本地變量。
print("After global assignment:",spam)
scope_test2()#"test spam"
輸出的結果是: