Ранее мы отметили, что переменная является локальной (видна только внутри функции), если значение ей присваивается внутри функции, в ином случае — переменная глобальная, т. е. видна (к ней можно обратиться) во всей программе, в том числе и внутри функции.
В отдельный файл с именем var_prog.py поместим следующий код:
# var_prog.py.
а = 3 # глобальная переменная.
print ('глобальная переменная, а = 1, а) у = 8 # глобальная переменная.
print (7глобальная переменная у = 1, у).
def func ():
print ('func: глобальная переменная, а = ', а) у = 5 # локальная переменная.
print ('func: локальная переменная у = ', у).
func () # вызываем функцию func.
print ('??? у = у) # отобразится глобальная переменная Обратим внимание, что у функции print может быть несколько аргументов, заданных через запятую. В одиночные апострофы помешается строка1. После выполнения программы получим следующий результат:
глобальная переменная, а = 3 глобальная переменная у = 8 func: глобальная переменная, а = 3 func: локальная переменная у = 5 ??? у = 8.
Внутри функции мы смогли обратиться к глобальной переменной, а и вывести ее значение на экран. Затем внутри функции создается локальная переменная у, причем ее имя совпадает с именем глобальной переменной — в этом случае при обращении к у выводится содержимое локальной переменной, а глобальная переменная остается неизменной.
Как быть, если мы хотим изменить содержимое глобальной переменной внутри функции? В следующем примере демонстрируется подобное изменение с использованием ключевого слова global:
# var_prog2.py.
х = 50 # глобальная переменная.
def func{):
global х # указываем, что х глобальная переменная print ('х равно', х) х = 2 # изменяем глобальную переменную.
print ('Заменяем глобальное значение х на', х).
func ().
print ('Значение х составляет', х) Результат работы программы var_prog2.py:
х равно 50.
Заменяем глобальное значение х на 2 Значение х составляет 2.