Я хочу создать программу на Python 3, состоящую из основной программы на Python и нескольких модулей, которые я буду импортировать в основную программу. Я хочу использовать переменные, созданные в основной программе, и использовать их в модулях. На данный момент у меня есть это в моей основной программе:
import sys
sys.dont_write_bytecode = True
import importlib
from tests import blather
relayrange = 87
relay = [0] * relayrange
blather.BLA(relayrange, relay)
На той же карте, что и моя основная функция, у меня есть каталог «тесты», в котором находится файл python blather.py, он содержит этот код
def BLA(relayrange, relay):
print ('this is module BLA')
print (relayrange)
print (relay)
Это работает! Но, как видите, мне нужно было возразить на передачу переменных в функцию, потому что я не нашел другого способа просто использовать переменные из основной программы (которые, как мне сказали, автоматически становятся «глобальными») в модуле BLA.
Итак, мой вопрос: как я могу использовать переменные (глобальные?) из основной части кода Python в импортированном модуле? У меня может быть много десятков переменных в моем основном файле, которые я хочу использовать в своих модулях, поэтому такая передача параметров станет очень громоздкой.
Я пробовал разные тесты с использованием ключевого слова global, но ничего не сработало. Как вы, наверное, заметили, я новичок в Python.
P.S. после того, как меня пометили как дубликат, я, наконец, решил эту проблему, поместив все глобальные переменные в модуль g.pi и импортировав g.pi в каждый модуль, которому нужны глобальные переменные, так что теперь у меня есть три, а не два модуля, а именно main.pi , blather.pi и g.py
main.pi содержит:
import sys
#sys.dont_write_bytecode = True
import importlib
from shared import g
from tests import blather
print(g.relayrange)
print(g.relay)
g.relay[47] = 10
print (g.relay)
g.relay[12] = 999
blather.BLA()
и blather.py содержит:
from shared import g
def BLA():
print ('in module')
print (g.relay)
g.py просто содержит переменные, например:
relayrange = 87
relay = [0] * relayrange