变量的作用域是定义为其声明在程序的可应用范围,或者说你可以在程序里的那些部分去访问定义的一个变量。
全局变量与局部变量
定义在函数内的变量有局部作用域,在一个模块中最高级别的变量有全>局作用域。
global_str = 'foo'
def foo():
local_str = "bar"
return global_str + local_str
上面的例子中,global_str
为全局变量,local_str
为局部变量,foo()
函数可以对全局变量和局部变量并行访问。
- 搜索一个变量,python先从局部作用域开始搜索
- 局部作用域没有搜索到变量会在全局作用域搜索,如果也没有搜索到会抛出
NameError
异常
global语句
将一个全局变量申明在函数体内,全局变量会被局部变量覆盖掉
global_str = 'foo'
def foo():
global global_str
local_str = "bar"
global_str = "test"
return global_str + local_str
print(foo())
闭包
如果在一个内部函数里,对在外部作用域的变量的引用,那么内部函数被认为是闭包