作用域
.
- 描述
作用域是针对变量而出现。当变量被赋值的时候,变量当前的位置就决定了变量能够被访问到的范围,这个范围就叫变量的作用域
官方文档:
A scope is a textual region of a Python program where a namespace is directly accessible. “Directly accessible” here means that an unqualified reference to a name attempts to find the name in the namespace.
.
- 四种作用域(LEGB)
a.L(Local):最内层,包含局部变量,比如一个函数/方法内部
b.E(Enclosing):包含了非局部也非全局的变量
c.G(Global):当前脚本的最外层,比如当前模块的全局变量
d.B(Built-in):包含了内建的变量/关键字等
.
- 作用域的规则
a.本地作用域是函数内部属于本函数的作用范围,因为函数可以嵌套函数,嵌套的内层函数有自身的内层范围
b.嵌套函数的本地作用域是属于内层函数的范围,不属于外层
c.全局作用域是文件级别的,或者说是模块级别的,每个py文件中处于顶层的变量都是全局作用域范围内的变量
d.内置作用域是预先定义好的,在__builtins__模块中。这些名称主要是一些关键字,例open、range、list等
.
- 实例
x = 1
def out1(i):
x = 2
y = 'a'
print(x