Нелокальное ключевое слово не работает - PullRequest
0 голосов
/ 23 сентября 2019

Я ожидаю, что переменные внутри 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...