NameError
.
Если в теле Python функции использовать переменную, не определённую внутри этой функции, Python будет искать эту переменную в окружающих областях видимости, в соответствии с правилом LEGB (Local, Enclosing, Global, Built-in):
print
, len
и т.д.
Если переменная не найдена ни в одной из этих областей видимости, Python вызовет исключение NameError
. Это означает, что переменная, которую вы пытаетесь использовать, не была определена.
Пример:
x = 10
def my_function():
print(x) # x не определена внутри my_function, но определена в глобальной области видимости
my_function() # Выведет 10
def another_function():
print(y) # y не определена ни в локальной, ни в охватывающей, ни в глобальной, ни во встроенной области видимости
another_function() # Вызовет NameError: name 'y' is not defined
Важно! Если вы присваиваете значение переменной внутри функции, Python считает её локальной переменной. Чтобы изменить глобальную переменную изнутри функции, нужно использовать ключевое слово global
.