Python变量的作用范围
全局变量
在函数外部定义的,可以在该变量后面任何地方调用该变量,那么这个变量就是全局变量。如果不加显示声明,全局与局部变量同名时,全局变量会被隐藏,这和C++类似。
局部变量
在代码段内部定义的变量,与C++一样的。
全局变量与局部变量共存的情况
x = "global"
def foo():
global x
y = "local"
x = x * 2
print(x) # global global
print(y) # local
foo()
x = 5
def foo():
x = 10
print("local x:", x) # local x: 10
foo()
print("global x:", x) # global x: 5
非局部变量
非局部变量用于局部作用范围没有确定的内嵌函数中。这意味着这个变量不在局部和全局范围中。使用nolocal
定义:
def outer():
x = "local"
def inner():
nonlocal x
x = "nonlocal"
print("inner:", x)
inner()
print("outer:", x)
outer()
输出:
inner: nonlocal
outer: nonlocal
上面的代码意味着,定义了一个内嵌函数,同时在下面又要执行内嵌函数,但是不想使用全局的变量。