一:global关键字用来在函数或其它局部作用域中使用全局变量。但是如果不使用全局变量也可以不适用global关键字声明。
二:nonlocal关键字用来在函数或其它作用域中使用外层(非全局)变量
def scope_test():
def do_local():
spam = "local spam" # 局部变量不会改变scope_test的spam值
def do_nonlocal():
nonlocal spam # nonlocal 它会改变scope_test的spam值
spam = "nonlocal spam"
def do_global():
global spam # 会改变模块层级的绑定
spam = "global spam"
spam = "test spam"
do_local()
print("1:", spam)
do_nonlocal()
print("2:", spam)
do_global()
print("3:", spam)
scope_test()
print("4:", spam)
结果:
1: test spam
2: nonlocal spam
3: nonlocal spam
4: global spam