变量作用域
通常而言,在编程语言中,变量的作用域从代码结构形式来看,有块级、函数、类、模块、包等由小到大的级别。但是在 Python 中,没有块级作用域,也就是类似 if 语句块、for 语句块、with 上下文管理器等等是不存在作用域概念的,他们等同于普通的语句。
if True: # if语句块没有作用域
x = 1
print(x)
def func(): # 函数有作用域
a = 8
print(a)
NameError: name 'a' is not defined
通常,函数内部代码可以访问外部变量,而外部代码通常无法访问内部变量。
Python的作用域一共有4层,分别是:
- L (Local) 局部作用域
- E (Enclosing) 闭包函数外的函数中
- G (Global) 全局作用域