global nonlocal
a = 10
def func():
global a # 修改全局变量
a += 1
print(a)
func()
a = 10
def f1():
a = 10
print(a) # 10
def f2():
a = 15
print(a) # 15
def f3():
global a
a += 1
print(a) # 11
print(a) # 15
f3()
print(a) # 10
f2()
print(a) # 10
f1()
a = 10
def func():
a = 10
def foo():
a = 15
def f1():
a = 20
def f2():
nonlocal a
a += 5
print(a) # 25
print(a) # 20
f2()
print(a) # 25
print(a) # 15
f1()
print(a) # 15
print(a) # 10
foo()
print(a) # 10
print(a) # 10
func()
a = 10
def func():
a = 10
def foo():
nonlocal a
a += 1
print(a) # 11
foo()
print(a) # 11
func()
print(a) # 10
a = 10
def func():
a = 30
def f1():
def foo():
nonlocal a
a += 1
print(a) # 31
foo()
print(a) # 31
f1()
func()
print(a) # 10
global:修改全局空间的变量对应的值
nonlocal:在最外层的函数中,修改局部空间的变量值.完全不涉及全局变量,只修改离它最近的一层,最近的一层没有变量继续向上找,直到找到最外层函数

浙公网安备 33010602011771号