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