Python3 变量作用域
阅读 (90) |
发布于 2020-05-19 14:18:27
作用域指的是变量的有效范围。变量并不是在哪个位置都可以访问的,访问权限取决于这个变量是在哪里赋值的,也就是在哪个作用域内的。
通常,函数、类内部的变量内部可以访问,但是无法被外部访问。但是内部代码可以访问外部变量,而外部代码通常无法访问内部变量。
Python的作用域一共有4层,分别是:L (Local) 局部作用域
E (Enclosing) 闭包函数外的函数中
G (Global) 全局作用域
B (Built-in) 内建作用域x = int(6) # 内建作用域,查找int函数
a = 0 # 全局作用域
def outer():
out_var = 1 # 闭包函数外的函数中
def inner():
inner_var = 2 # 局部作用域
如果出现本身作用域没有定义的变量,那该如何寻找呢?
Python以 L --> E --> G --> B 的规则查找变量,即:局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,最后去内建中找。如果还找不到,那就提示变量不存在的错误。
全局变量和局部变量
函数内部的变量拥有一个局部作用域,被叫做局部变量;在函数外的拥有全局作用域的变量,被称为全局变量。
(类、模块等同理)所谓的局部变量是相对的。局部变量也有可能是更小范围内的变量的外部变量。局部变量只能在其被声明的函数内部访问,而全局变量可以在