MiddleКодИногдаЕщё не отвечали
Что возбудит эта функция и почему?
Предскажите, что сделает запуск f().
x = 10
def f():
print(x) # (1)
x = 20 # (2)
f()
Определите вывод и объясните.
UnboundLocalError: local variable 'x' referenced before assignment. Поскольку x присваивается где-либо в функции (строка 2), Python считает её локальной на всю функцию, поэтому чтение на строке 1 падает. Решение: добавить global x или не затенять её. Это правило области видимости LEGB.
- ✗Думать, что привязка имени решается в точке использования, а не для всей функции
- ✗Ожидать, что строка 1 прочитает глобальную
x - ✗Путать UnboundLocalError с обычным NameError
- →Как
globalиnonlocalменяют, в какую область целится присваивание? - →Каковы четыре области в порядке поиска LEGB в Python?