#python #variables #global
#python #переменные #глобальный
Вопрос:
У меня есть два модуля, a.py и b.py . Я хочу, чтобы глобальные переменные из a.py быть доступным в b.py вот так:
a.py:
#!/usr/bin/env python
var = "this is global"
import b
b.foo()
b.py:
#!/usr/bin/env python
var = "this is global"
def foo():
print var
В настоящее время я повторно объявляю глобальные переменные в каждом модуле. Должен быть более простой способ.
Комментарии:
1. Это не имеет смысла. Вы хотите
import a
включитьb
и использовать ихprint a.var
2. @JBernardo: Нет, это приведет к циклическому импорту.
3. @WilHall Нет, это не так, потому
import b
что их следует удалить. Кстати, Python работает с циклическим импортом без жалоб.
Ответ №1:
Создайте модуль настроек, который имеет общие глобальные переменные, если это то, что вы хотите. Таким образом, вы импортируете и ссылаетесь на каждый глобальный модуль только один раз и сохраняете их изолированными в пространстве имен модуля настроек. Это хорошо.
#settings.py
var = 'this is global'
# a.py
import settings
import b
b.foo()
# b.py
import settings
def foo():
print settings.var
Комментарии:
1. Спасибо всем. Имеет смысл. Теперь нужно выполнить работу и выполнить поиск / замену моих 85 модулей (плагинов).
Ответ №2:
Сделав b.py требовать глобальных данных от a.py таким образом, вы создали классы, которые зависят друг от друга, что является плохим дизайном.
Если у вас есть статические переменные, которые необходимо совместно использовать, подумайте о создании c.py которые оба a.py и b.py может импортировать и ссылаться.
Если у вас есть динамические переменные, которые необходимо совместно использовать, рассмотрите возможность создания класса настроек, который можно создавать и передавать между модулями.
Ответ №3:
Определите свои глобальные переменные в c.py и импортируйте их в a.py и b.py