Python 變量做用域

Python查找一個變量時會按照「局部做用域」、「嵌套做用域」、「全局做用域」和「內置做用域」的順序進行搜索函數

示例code

def foo():
    b = 'aaa'

    # Python中能夠在函數內部再定義函數
    def bar():
        c = True
        print(a)
        print(b)
        print(c)

    bar()
    # print(c)  # NameError: name 'c' is not defined


if __name__ == '__main__':
    a = 100
    # print(b)  # NameError: name 'b' is not defined
    foo()

代碼的if分支中定義了一個變量a這是一個全局變量(global variable),屬於全局做用域,由於它沒有定義在任何一個函數中。作用域

在上面的foo函數中咱們定義了變量b,這是一個定義在函數中的局部變量(local variable),屬於局部做用域,在foo函數的外部並不能訪問到它;變量

但對於foo函數內部的bar函數來講,變量b屬於嵌套做用域,在bar函數中咱們是能夠訪問到它的。搜索

bar函數中的變量c屬於局部做用域,在bar函數以外是沒法訪問的co

相關文章
相關標籤/搜索