python 中的作用域规则是什么
定义
在python中,'作用域'是指变量、函数、类等标识符的可见性和生命周期的范围。 python 采用的是LEGB规则来确定变量的作用域查找顺序
LEGB 规则
LEGB 是四个作用域层级的缩写,python 按照这个顺序来查找变量
L - Local(局部作用域)
- 函数或者lambda 表达式内部定义的变量
- 这些变量只能在该函数内部使用
def func():
x = 10 #局部变量
print(x)
func() #输出10
print(x) #报错 x 未定义
E - Enclosing function locals(嵌套函数的外层作用域)
- 如果一个函数嵌套在另一个函数中,外部函数的变量对内部函数是可见的
def outer():
x = 'outer'
def inner():
print(x) #使用的是outer函数中的x
inner()
outer() #输出
G -Global(全局作用域)
- 在模块层次(不在任何函数内部)定义的变量
- 可以在整个模块中的访问
x = 100 # 全局变量
def func():
print(x)
func() # 输出 100
B ——Built-in(内置作用域)
- Python 内置的一些关键字和函数,如print()、len()、True、False等
print(len('hello')) #len 是内置作用域中的函数
修改作用域中变量:
使用global关键字修改全局变量
x = 10
def func():
global x
x = 20
func()
print(x) # 输出 20
使用 nonlocal 关键字修改嵌套作用域中的变量(只适用于嵌套函数):
def outer():
x = "A"
def inner():
nonlocal x
x = "B"
inner()
print(x)
outer() # 输出 "B"

浙公网安备 33010602011771号