Как использовать глобальные переменные в отдельных модулях для python?

У меня есть этот очень неприятный скрипт на Python, который, мягко говоря, не очень хорошо управляется, и я хотел бы его улучшить. Я думал об этом, разбивая код на то, что они делают, а затем импортируя их в основную функцию, которая все запускает. Но в некоторых из моих определений есть глобальные (например, глобальные на основе ключевых слов), как мне точно выделить их в отдельные файлы?

например main,py wi есть:

import function

message = {}

while (true):
    function.function(message)
    print(message)

и функция, py имеет:

def function(some variables) :

    global message

    if (somevariable = something):
        message = "xyz"

сообщение во втором файле дает мне ошибку

РЕДАКТИРОВАТЬ: Итак, я вижу, что мне нужно дать немного больше контекста, на самом деле запущено 3 процесса (функции), и глобальное сообщение - это то, что я использую для передачи информации между всеми этими потоками. Поэтому в идеале я хотел бы разделить все процессы как разные файлы, а затем продолжать добавлять их как новый поток. Как мне это сделать?


person Indrajeet Haldar    schedule 15.07.2021    source источник
comment
Вместо этого объявите message в function.py. Затем в main.py назовите его function.message.   -  person Green Cloak Guy    schedule 15.07.2021
comment
Чтобы получить доступ к любому импортированному имени, вы используете modulename.name. Итак, вы звоните function.function() и function.message   -  person Barmar    schedule 15.07.2021
comment
Это будет очень сложно в масштабе, если у вас нет тестов для проверки вашей работы. Если вы этого не сделаете, моим первым шагом будет написание   -  person Ben    schedule 15.07.2021
comment
Не могли бы вы, ребята, предложить просто сохранить это как в одном файле? @GreenCloakGuy проблема в том, что я использую сообщение в нескольких модулях (у которых разные обязанности, поэтому будет около 5 сообщений = function1.message , function2.message и т. д.   -  person Indrajeet Haldar    schedule 15.07.2021
comment
each module has its own "global" namespace stackoverflow.com/questions/15890014/   -  person Epsi95    schedule 15.07.2021
comment
Вы должны реорганизовать функцию и классы в других модулях и вызывать из основного модуля, поэтому в идеале вместо объявления глобального сообщения вы должны передать сообщение def function(somevariables, message), а затем использовать переменную внутри функции.   -  person Epsi95    schedule 15.07.2021
comment
хорошо @Epsi95, но это не решает проблему передачи глобальных переменных модуля в основную функцию, чтобы я мог возиться с ней   -  person Indrajeet Haldar    schedule 15.07.2021
comment
ах да, это не совсем возможно, я думаю? Думаю, мне нужно вернуться к чертежной доске и спланировать код.   -  person Indrajeet Haldar    schedule 15.07.2021
comment
Итак, я немного потерялся. На самом деле у меня есть несколько запущенных ступеней, и переменная сообщения в основном используется для передачи информации между ними, поскольку она определена в глобальной области. какова альтернатива, если я хочу написать каждый из процессов в виде отдельного файла и запустить функцию, но при этом передавать информацию между каждым из потоков?   -  person Indrajeet Haldar    schedule 15.07.2021