You are currently viewing Глобальные и локальные переменные в Python

Глобальные и локальные переменные в Python

Глобальные переменные — это те, которые не определены внутри какой-либо функции и имеют глобальную область действия, в то время как локальные переменные-это те, которые определены внутри функции, и ее область действия ограничена только этой функцией. Другими словами, мы можем сказать, что локальные переменные доступны только внутри функции, в которой она была инициализирована, в то время как глобальные переменные доступны во всей программе и внутри каждой функции.

Локальные переменные

Локальные переменные-это те, которые инициализируются внутри функции и принадлежат только этой конкретной функции. К нему нельзя получить доступ нигде за пределами функции. Давайте посмотрим, как создать локальную переменную.

Пример: Создание локальных переменных

def f():
	
	# local variable
	s = "I love programbox.ru"
	print(s)

# Driver code
f()

Выход:

I love programbox.ru

Если мы попытаемся использовать эту локальную переменную вне функции, то давайте посмотрим, что произойдет.

Пример:

def f():
	
	# local variable
	s = "I love Geeksforgeeks"
	print("Inside Function:", s)

# Driver code
f()
print(s)

Выход:

NameError: name 's' is not defined

Глобальные переменные

Глобальные переменные-это те, которые определены вне любой функции и доступны во всей программе, т. Е. внутри и вне каждой функции.Давайте посмотрим, как создать глобальную переменную.

Пример: Определение глобальных переменных и доступ к ним

# This function uses global variable s
def f():
	print("Inside Function", s)

# Global scope
s = "I love Geeksforgeeks"
f()
print("Outside Function", s)

Выход:

Inside Function I love Geeksforgeeks Outside Function I love Geeksforgeeks

Переменная s определяется как глобальная переменная и используется как внутри функции, так и за ее пределами.

Примечание: Поскольку локальных значений нет, будет использоваться значение из глобальных значений.

Теперь, что делать, если есть переменная с тем же именем, инициализированная как внутри функции, так и глобально. Теперь возникает вопрос, будет ли локальная переменная оказывать какое-то влияние на глобальную переменную или наоборот, и что произойдет, если мы изменим значение переменной внутри функции f()? Повлияет ли это и на глобальные рынки? Мы тестируем это в следующем фрагменте кода:

# This function has a variable with
# name same as s.
def f():
	s = "Me too."
	print(s)

# Global scope
s = "I love programbox.ru"
f()
print(s)

Выход:

Me too. I love programbox.ru.

Если переменная с таким же именем также определена в области действия, то она будет выводить только значение, заданное внутри функции, а не глобальное значение.

Вопрос в том, что делать, если мы попытаемся изменить значение глобальной переменной внутри функции. Давайте рассмотрим это на примере ниже.

Пример:

# This function uses global variable s
def f():
	s += 'GFG'
	print("Inside Function", s)

# Global scope
s = "I love Geeksforgeeks"
f()

Выход:

UnboundLocalError: local variable 's' referenced before assignment

Чтобы вышеприведенная программа работала, нам нужно использовать ключевое слово “глобальный”. Давайте посмотрим, что это за глобальное ключевое слово.

Глобальное Ключевое слово

Нам нужно только использовать глобальное ключевое слово в функции, если мы хотим выполнить назначения или изменить глобальную переменную. global не требуется для печати и доступа. Python “предполагает”, что нам нужна локальная переменная из-за присвоения s внутри f (), поэтому первый оператор выдает сообщение об ошибке. Любая переменная, измененная или созданная внутри функции, является локальной, если она не была объявлена как глобальная переменная. Чтобы сообщить Python, что мы хотим использовать глобальную переменную, мы должны использовать ключевое слово “глобальный”, как видно из следующего примера:

Пример 1: Использование глобального ключевого слова

# This function modifies the global variable 's'
def f():
	global s
	s += ' GFG'
	print(s)
	s = "Look for programbox.ru Python Section"
	print(s)

# Global Scope
s = "Python is great!"
f()
print(s)

Выход:

Python is great! GFG Look for programbox.ru Python Section Look for programbox.ru Python Section

Теперь нет никакой двусмысленности.

Пример 2: Использование глобальных и локальных переменных

a = 1

# Uses global because there is no local 'a'
def f():
	print('Inside f() : ', a)

# Variable 'a' is redefined as a local
def g():
	a = 2
	print('Inside g() : ', a)

# Uses global keyword to modify global 'a'
def h():
	global a
	a = 3
	print('Inside h() : ', a)


# Global scope
print('global : ', a)
f()
print('global : ', a)
g()
print('global : ', a)
h()
print('global : ', a)

Выход:

global : 1 Inside f() : 1 global : 1 Inside g() : 2 global : 1 Inside h() : 3 global : 3