参考:
https://www.programiz.com/python-programming/global-local-nonlocal-variables
说明
nonlocal 用于嵌套函数(nested)nonlocal后若发生改变则全部改变
example_1:
def outer():
x = "local"
def inner():
nonlocal x
x = "nonlocal"
print("inner:", x)
inner()
print("outer:", x)
outer()
out:
inner: nonlocal
outer: nonlocal
example_2:
def outer():
x = [0] * 3
def inner():
nonlocal x
x[1] = 999
print("inner:", x)
inner()
print("outer:", x)
outer()
out:
inner: [0, 999, 0]
outer: [0, 999, 0]