Python中变量作用域分4种情况:
- L: local,局部作用域,即函数中定义的变量。
- E: enclosing,父级函数的局部作用域,即此函数的上级函数的局部作用域。
- G: globa,全局变量
- B: build-in,系统模块,如:int,max函数等
优先级顺序为:局部作用域(L)>父级函数作用域(E)>全局作用域(G)>系统模块(B)
x = max(1, 6) # max为系统变量,它的作用域为python的所有模块
y = 1 # y为全局变量,它的作用域为当前模块
def outer():
i = 3 # i的作用域为当前函数,包括嵌套函数
def inner():
count = 2 # count为局部变量,作用域只在当前函数有效
函数中修改不了全局作用域的变量
y = 10
def func():
y = 5
print('y1 =', y)
func()
print('y2 =', y)
输出:
y1 = 5
y2 = 10
如需修改,加global关键字,声明变量为全局变量
y = 10
def func():
global y
y = 5
print('y1 =', y)
func()
print('y2 =', y)
输出:
y1 = 5
y2 = 5