Питон читает следующую строку кода заранее - PullRequest
0 голосов
/ 04 июня 2018
var = "Old world"
class a(object):
    def b(self):
        print(var)
        #var = "Updated world"      
aObj = a()
aObj.b()

Когда я запускаю приведенный выше код, он работает нормально.Но когда я раскомментирую строку 5 var="Updated World", она выдает UnboundLocalError в строке 4. Я понимаю, что я не могу изменить var в строке 5. Но почему я получаю ошибку в строке 4. Любые хорошие входные данные приветствуются.

1 Ответ

0 голосов
/ 04 июня 2018

Синтаксический анализатор Python читает весь файл перед выполнением даже одной его строки.В то время, когда функция def ined, ее тело анализируется, и Python решает, какие символы (имена переменных) относятся к чему.Если он видит какой-либо оператор присваивания внутри функции, он принимает правопреемника в качестве локальной переменной ;если вы явно не переопределите это с помощью ключевых слов global или nonlocal.Если в теле функции нет оператора присваивания, переменная наследуется из внешней области видимости.

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