python中nonlocal與global的例子對比

關於作用於,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"

輸出的結果是:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章