Ошибка Python «Глобальное имя не определено» и как с ней справиться

Глобальное в общем смысле относится к тому, что известно во всем мире. Глобальный происходит от слова земной шар, следовательно, он означает относящийся ко всей планете. В рамках программирования глобальная переменная относится к переменной, которая не только известна по имени внутри функции, но и может быть вызвана из любого места в программе.
В отличие от локальных переменных, которые специально предназначены для использования внутри определенного блока кода или функции, на глобальные переменные (обычно определяемые с помощью ключевого слова global) можно ссылаться из любого места кода.
Ошибка глобального имени не определена появится на вашем экране, когда интерпретатор попытается сослаться на переменную в рамках всей программы, не ограничиваясь определенными сегментами, но не может найти ни одного.
В Python ошибка «Глобальное имя не определено» возникает, когда интерпретатору не удается найти глобальную переменную, к которой он пытается получить доступ. Глобальные переменные могут быть объявлены двумя способами: вне функции, что делает ее доступной во всей программе; или внутри функции, используя ключевое слово global, что делает его пригодным для использования за пределами функции.
Работа с глобальными переменными в Python.
Глобальные переменные могут быть объявлены двумя основными способами. Поскольку их объем не ограничивается конкретными областями или конкретным использованием в нашем коде, ему нужен элемент уникальности и четкого определения. Чтобы получить к нему доступ внутри и вне функций, мы можем объявить глобальные переменные в верхней части наших программ. Если вы определяете переменную вне функции, ссылка на нее может быть сделана как внутри функции, так и вне ее, а также из любого места в коде.
Например, предположим, что у нас есть переменная с именем считатьначальное значение которого равно нульно внутри пользовательской функции увеличить_счет()мы будем приращение его стоимость на один а затем распечатать новое значение. В таких случаях мы используем переменную count как внутри, так и вне нашей функции. Следовательно, всегда предпочтительнее объявлять переменную снаружи в самом начале следующим образом.
#declaring global variables
count=0
#increasing the value inside our function
def increase_count(count):
count=count+1
return count
#will display the changed value in the scope of the function
print(increase_count(count))
#will display the intial value
print(count)
Первый оператор печати напечатает увеличенное значение count, потому что оно было изменено внутри функции, но второй оператор печати отобразит начальное значение переменной, потому что вне функции значение глобальной переменной остается таким же, пока оно не будет изменено. вне функции. Давайте посмотрим на наш вывод.
Аккуратный! Вы успешно научились объявлять глобальные переменные самым простым способом в python.

Другой способ объявления глобальных переменных — использование слова Глобальный внутренние функции.
Когда вы помещаете ключевое слово «глобальный» перед объявлением переменной, оно предупреждает интерпретатор о том, что переменная будет доступна для использования даже вне области действия функции, в отличие от локальных переменных, которые не определены никакими ключевыми словами и могут быть только внутри функции. .
Использование локальных переменных вне функции приведет к синтаксической ошибке или ошибке имени, когда интерпретатор не сможет идентифицировать имя переменной.
Давайте посмотрим, как использовать ключевое слово global. Мы будем использовать приведенный выше пример, где мы объявим переменную с именем count, присвоив значение нуль к этому. Значение count изменится внутри функции только когда функция вызывается, иначе всякий раз, когда мы обращаемся к переменной, она должна печатать ноль.
#declaring global variables
#increasing the value inside our function
def increase_count():
#using the global keyword to define a global variable inside our function
global count
#assigning a value of zero to global variable count
count=0
#increasing the value of count
if count==0:
count = count+1
return count
#displaying value of count by calling the function
print(increase_count())
#only displaying the original value of the global variable
print(count)
На этот раз, поскольку мы увеличиваем счетчик глобальной переменной, вывод будет 1 и 1 вместо 1 и 0.

Связано: Использование функции Python globals().
Устранение ошибок «Глобальное имя не определено» в Python
«Глобальное имя не определено» — это ошибка имени, которая может быть вызвана разными причинами. Пара из них:
- Если вы забыли использовать ключевое слово global перед переменной и попытались получить к ней доступ вне области действия функции. Поскольку это локальная переменная, интерпретатор попытается найти ее экземпляр в другом месте, а не внутри функции.
- Если переменная была объявлена как глобальная переменная_имя, но переменной не присвоено конкретное значение. Это наиболее распространенная причина, по которой может возникнуть ошибка имени. Например, в предыдущем разделе, если вы по какой-то причине забыли присвоить значение нашей переменной count, это вызвало бы ошибку имени.
Ошибка выглядит примерно так:
Traceback (most recent call last):
File "main.py", line 10, in <module>
print(increase_count())
File "main.py", line 7, in increase_count
if count==0:
NameError: global name 'count' is not defined
Единственное исправление для этого состоит в том, чтобы убедиться, что ваши переменные объявлены правильно в соответствии с их использованием. Что еще более важно, убедитесь, что вы присвоили им правильные значения. При объявлении глобальной переменной внутри функции сначала используйте ключевое слово global перед именем переменной, а затем присваивайте ей значение.
Проверьте: Как отключить предупреждение в Python?
В заключение…
В этой статье рассказывается о том, какие глобальные переменные есть в Python. Глобальные переменные могут использоваться в рамках всей программы, будь то внутри или вне определенного блока кода. Есть несколько способов объявить глобальные переменные, и они обсуждались в предыдущих разделах. Ошибку имени, связанную с глобальными переменными, довольно просто исправить. Как вы думаете, какие еще различия существуют между локальными и глобальными переменными, кроме сферы их использования?
Ссылка на источник