Я ожидаю, что переменные внутри foo изменятся, поскольку я использую нелокальное ключевое слово на панели методов.Насколько я понимаю, переменные a, b, c больше не являются локальными в bar и являются просто присваиванием переменных a, b, c в foo, и поэтому значения должны меняться в foo.Я не вижу, что происходит, когда я запускаю приведенный ниже код в python3.Интересно, что мне не хватает
Ниже вывод
From foo
a = 10
b = 20
c = 30
From bar
a = 11
b = 12
c = 19
From chu
a = 200
b = 300
c = 500
Вот код
def foo():
a = 10
b = 20
c = 30
print("From {func}\na = {a}\nb = {b}\nc = {c}\n".format(func="foo", a=a, b=b, c=c))
def bar():
nonlocal a
nonlocal b
nonlocal c
a = 11
b = 12
c = 19
print("From {func}\na = {a}\nb = {b}\nc = {c}\n".format(func="bar", a=a, b=b, c=c))
def chu():
a = 200
b = 300
c = 500
print("From {func}\na = {a}\nb = {b}\nc = {c}\n".format(func="chu",a=a,b=b,c=c))
chu()
bar()
foo()