Ключевое слово global используется в функции для ссылки на глобальную переменную внутри этой функции и ее изменения.Однако даже если ключевое слово global не используется и мы просто пытаемся напечатать переменную, python предполагает, что это глобальная переменная, на которую ссылаются, и просто печатает, как это.
a = 2
def foo():
print(a)
foo()
вышеприведенный код выводит2. Но следующий код выдает ошибку.
a = 2
def foo():
print(a)
a = 3
foo()
Я получаю UnboundLocalError, говоря, что локальная переменная 'a' была указана перед присваиванием.Теперь, поскольку python является интерпретируемым языком и выполнение происходит по одной строке за раз, не следует ли сначала вывести глобальное значение a, равное 2 (как в первом случае), а затем создать локальную переменную с тем же именем и назначить его3. Во втором случае, как интерпретатор узнает прямо в операторе print, что я ссылаюсь на другую переменную 'a' в следующей строке?Почему он не ведет себя так, как описано выше?
PS: я понимаю, что использование ключевого слова global может помочь мне изменить значение a с 2 на 3.