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