Найти тему

Глобальные переменные в Python. Зачем? Когда?

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

В таком случае проще воспользоваться глобальными переменными в Python, конечно можно и без них - например через классы, но если задача не столь критична - то предпочтительнее простой подход.

- Так, как же передать значения переменных между файлами Python?

- Как получить доступ к переменным между файлами на Python?

Ответ: Будем использовать глобальные переменные.

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

Создаем файл globals.py

В этом файле теперь создадим функцию initialize, которая будет инициализировать глобальную переменную val1 значением по умолчанию:

def initialize():
global
val1
val1 = 0.0

Осталось только один раз вызвать эту функцию initialize из нашего основного класса/файла, например из файла main.py и затем мы сможем импортировать файл globals из любого другого класса/файла проекта и использовать эти глобальные переменные.

Создаем файл my_super_module.py

И в нем создаем функцию myfunction, в которой будет изменяться значение глобальной переменной (не забываем импортировать файл globals.py для доступа к глобальным переменным):

import globals

def myfunction():
globals.val1 += 1

И наконец, вот пример основного файла проекта main.py

import globals
import my_super_module

if __name__ == "__main__":
globals.initialize() # инициализируем глобальные переменные
print( globals.val1 ) # выводим начальное значение, которое определили в момент инициализации
my_super_module.myfunction() # вызываем функцию из my_super_module, которая меняет значение глобальной переменной
print( globals.val1 ) # выводим значение глобальной переменной, которое было изменено при вызове функции
myfunction из нашего модуля my_super_module

Вот результат вывода в консоль при выполнении файла main.py:
0.0
1.0

В комментариях в файле main.py я постарался подробно объяснить процесс его работы, если что-то осталось непонятно, то смело пишите об этом - ваш вопрос в комментариях под этой статьей.

Если контент понравился, то Подписывайтесь на канал!