python 名稱空間的作用域範圍

[root@test1 classes]# more 1.py
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)
結果輸出如下:
[root@test1 classes]# python 1.py
After local assignment: test spam
After nonlocal assignment: nonlocal spam
After global assignment: nonlocal spam
In global scope: global spam
[root@test1 classes]#


作用域範圍:①do_global()的範圍,作用域是在調用scope_test()外

           ②do_local()的範圍,作用域只能在do_local()函數體內

           ③do_nonlocal()的範圍,作用域在scope_test()函數體內,所以會覆蓋scope_test函數定義的spam值。

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