Я пытался очистить свой код для симулятора эволюции нейронной сети, над которым я работаю, потому что он вырос до 1000 строк и его очень трудно читать. Часть этого процесса включает перемещение блоков кода из основного цикла в их собственные функции (обработка событий, рисование на экран и т. Д.) Или в свои собственные модули. Однако у меня возникают проблемы с выяснением того, как обращаться с глобальными переменными.
В качестве примера, у меня есть переменная с именем «selected», которая отслеживает конкретное существо нейронной сети, выбранное пользователем. Я хочу изменить значение этой переменной в функции обработки событий, когда пользователь нажимает на новое существо; Я также хочу изменить его значение, когда существо умирает, что происходит в другом блоке кода в его собственной функции.
Я понимаю, что могу использовать ключевое слово "global" для этого, но у меня сложилось впечатление, что это обычно плохая практика. Я также знаю, что могу хранить эти переменные в отдельном модуле и импортировать их, но когда я имею дело с более чем 30 переменными, ввод «module_name.variable_name» каждый раз, когда я хочу изменить их, кажется излишне утомительным. Я также подумывал о том, чтобы сохранить все эти значения в глобальном словаре, чтобы я мог изменить их изнутри функций, но, опять же, ввод «dict_name ['var_name']» каждый раз кажется ненужным.
Итак, по сути, мой вопрос: что было бы лучшим в этой ситуации? Это одно из этих решений, или есть более чистый подход? Я хотел бы убедиться, что я на правильном пути, прежде чем потратить часы на перестройку своего кода. Спасибо за вашу помощь!