Я очень запутался с правилом 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()