Python 学习笔记之 变量作用域
Contents
要点概括:
对于变量作用域,变量的访问以
L(Local)–>E(Enclosing)–>G(Global)–>B(Built-in)
的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。
1.局部作用域
观察如下例子:
|
|
程序输出结果为2
,因为此时直接在函数inner()
内部找到了变量x
。
2.闭包函数外的函数
|
|
程序输出结果为1
,因为在内部函数inner()
中找不到变量x
,继续去局部外的局部——函数outer()
中找,这时找到了,最后输出1
。
3.全局作用域
|
|
程序输出结果为0
,在局部(inner 函数)、局部的局部(outer 函数)都没找到变量x
,于是访问全局变量,此时找到了并输出。
4.内建作用域
|
|
程序输出结果为3
,在局部(inner 函数)、局部的局部(outer 函数)以及全局变量中都没有找到变量x
,于是访问内建变量,此时找到了并输出。