Область видимости. Глобальные и локальные переменные
Функции в свое работе активно используют переменные. Но для того, чтобы функции не мешали друг друг в своей работе, переменные объявленные внутри одной функции не видны внутри другой функции. К примеру, объявим две функции и попытаемся получить доступ из одной функции к переменным другой:
def function1():
a = 1
print(a)
def function2():
print(a)
function1()
function2()
Мы получим примерно такую ошибку:
Traceback (most recent call last):
File "c:/projects/test.py", line 9, in <module>
function2()
File "c:/projects/test.py", line 6, in function2
print(a)
NameError: name 'a' is not defined
Таким образом каждая функция имеет свою область видимости. Т.е. те переменные которые она может использовать в своей работе.
Но, что если я хочу использовать значения переменных из одной функции в другой функции. В таком случае, одним из методов является использования глобальных переменных - т.е. таких переменных, которые не ограниченны областью видимостью какой-то одной функции, а доступны всем функциям программы, например:
def function1():
global a
a = 5
print(a)
def function2():
global a
print(a)
function1()
function2()
Использование таких глобальных переменных объявляется внутри функций, через ключевое слово global
. И как показано в примере выше, при запуске, такая программа выдаст:
5
5