在python 中全局变量与局部变量的区别是作用域不同。一般局部变量声明在方法、类中,作用范围仅限于方法体、类中。而全局变量没有这个限制。
1.全局变量作用于整个py文件;
2.局部变量作用域方法体、类声明范围内;
如下代码:
'''
全局变量 与本地变量的测试
'''
# 定义全局变量 num
def add():
num2=12
print("局部变量 num2:",num2)
#global num #声明这里使用的是全局变量,有指定引用的意思
num=2
num=1
print("全局变量,原始num:",num)
add();
print("运算后num:",num)
A.方法中使用全局变量,与顺序无关;
B.方法中改变全局变量的值,对于传值参数可使用关键字“global”;
C.方法体外使用局部变量,会产生异常;
关于变量作用于的关键字nonlocal
从字面意思是指【非局部变量】,【python 3.x】使用方法如下代码:
def fn():
num = 1;
def fn1():
nonlocal num
num+=1
return num
return fn1();
print("nonlocal 使用测试:",fn())
结果:

上面代码中 num不是全局变量,在不使用nonlocal声明的前提下,运行时产生异常。使用nonlocal声明的意义在于,指定num非方法fn1中声明的。编译器查找的范围扩展到fn。