Есть ли особый порядок поиска переменных в Python? - PullRequest
0 голосов
/ 03 июня 2018

Я очень запутался с правилом LEGB.

В строке 7 я ожидал, что 4 будет напечатано, но он продолжает печатать 5. Я осознаю тот факт, что всякий раз, когда вызывается метод bar (),он ищет переменную x в области видимости foo (), поскольку у него нет x, объявленного в локальной области видимости (bar ()).но когда метод bar () вызывается во второй раз, он печатает 5, а не 4.

Почему результаты первого bar () и второго bar () отличаются с точки зрения правила LEGB?

Вот следующий код:

def foo():
    x=4
    def bar():
        print(x)  # Accesses x from foo's scope
    bar()  # Prints 4
    x=5
    bar()  # Prints 5 <---- Line 7

foo()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...