Global в Python — это ключевое слово, которое используется в теле функции для определения глобальной переменной и выполнения изменений на ней.
В Python, переменные, объявленные внутри функции, известны как локальные переменные. Эти переменные действительны только в пределах функции, где они объявлены. Если мы попытаемся получить доступ к локальной переменной за пределами функции, мы столкнемся с ошибкой.
def func():
local_var = "Я локальная переменная"
print(local_var)
func()
print(local_var) # Здесь мы получим ошибку NameError: name 'local_var' is not defined
С другой стороны, глобальные переменные — это переменные, объявленные вне функции. Эти переменные могут быть доступны в любом месте в вашем коде.
global_var = "Я глобальная переменная"
def func():
print(global_var)
func()
print(global_var)
Ключевое слово global
позволяет нам работать с глобальными переменными внутри функции.
Давайте рассмотрим пример:
global_var = "Я глобальная переменная"
def func():
global_var = "Я изменилась внутри функции"
print(global_var)
func()
print(global_var)
#Я изменилась внутри функции
#Я глобальная переменная
Вы заметите, что, несмотря на то что мы изменили global_var
внутри функции, это не повлияло на глобальную переменную за пределами функции. Это происходит потому, что, когда мы меняем переменную внутри функции, Python создает новую локальную переменную с тем же именем. Чтобы изменить глобальную переменную внутри функции, нам нужно использовать ключевое слово global
.
global_var = "Я глобальная переменная"
def func():
global global_var
global_var = "Я изменилась внутри функции"
print(global_var)
func()
print(global_var)
#Я изменилась внутри функции
#Я изменилась внутри функции
Мы можем объявить глобальную переменную внутри функции с помощью ключевого слова global
. Если глобальная переменная еще не была определена вне функции, Python создаст ее в глобальной области видимости.
def func():
global new_global_var
new_global_var = "Я глобальная переменная, объявленная внутри функции"
print(new_global_var)
func()
print(new_global_var) # Здесь мы не получим ошибку
#Я глобальная переменная, объявленная внутри функции
#Я глобальная переменная, объявленная внутри функции
Если у вас есть вложенные функции, то global
в внутренней функции будет относиться к глобальному пространству имен, а не к пространству имен внешней функции. Давайте рассмотрим пример:
def outer_func():
var = "Я переменная внешней функции"
def inner_func():
global var
var = "Я переменная внутренней функции"
inner_func()
print(var)
outer_func()
print(var)
#Я переменная внешней функции
#Я переменная внутренней функции
Вы увидите, что значение var
в outer_func
не изменилось после вызова inner_func
. Это происходит потому что global var
в inner_func
объявляет var
как глобальную переменную, а не переменную outer_func
.
В Python есть еще одно ключевое слово, nonlocal
, которое используется для работы с переменными в ближайшей внешней области видимости (но не в глобальной области видимости). Оно позволяет изменять переменные во внешних функциях. Если вы попытаетесь использовать nonlocal
с глобальной переменной, вы получите ошибку.
def outer_func():
var = "Я переменная внешней функции"
def inner_func():
nonlocal var
var = "Я переменная внутренней функции"
inner_func()
print(var)
outer_func() # Здесь var в outer_func изменилась после вызова inner_func
#Я переменная внутренней функции
Пример 1: Использование global
counter = 0
def update_counter():
global counter
counter += 1 # увеличиваем глобальный счетчик на 1
update_counter()
update_counter()
print(counter) # выведет 2, потому что мы вызвали функцию update_counter() дважды
#2
Пример 2: Изменение глобальной переменной безglobal
counter = 0
def update_counter():
counter = "Я локальная переменная"
update_counter()
print(counter) # все равно выведет 0, потому что функция обновила локальную переменную, а не глобальную
#0
Пример 3: Использование global
для создания глобальной переменной внутри функции
def create_global_variable():
global new_var
new_var = "Я новая глобальная переменная"
create_global_variable()
print(new_var)
#Я новая глобальная переменная
В то время как global
может быть полезным инструментом, есть некоторые нюансы, которые нужно учесть при его использовании. Первое, что стоит отметить, это то, что использование глобальных переменных может делать программу более сложной для понимания и отладки, так как они могут быть изменены в любом месте в коде.
Второе — возможность переопределения глобальных переменных, что может привести к неожиданным результатам. Если глобальная переменная и локальная переменная имеют одно и то же имя, и вы используете ключевое слово global
внутри функции, вы измените глобальную переменную, а не локальную.
В общем, в Python идеально избегать использование глобальных переменных, если это возможно, и рассмотреть другие варианты, такие как использование аргументов функции или классов.
В этом руководстве мы рассмотрели, как использовать ключевое слово global
в Python. Это ключевое слово позволяет нам работать с глобальными переменными внутри функций, что может быть полезно в некоторых случаях. Однако использование global
следует делать осторожно, так как это может сделать код более сложным для понимания и отладки.
Содержание: