2015-09-08 2 views
0

Python - это мой новейший язык (Python-2.6), мой фон находится на C/C++. Обычно я создавал глобальную переменную и мог бы модифицировать и получать доступ к ней во всех моих файлах. Я пытаюсь достичь той же функциональности в python.Использование и изменение глобальных переменных для нескольких модулей в Python

Основано на этом сообщении: Python - Visibility of global variables in imported modules Я вижу, что «Globals in Python являются глобальными для модуля, а не для всех модулей». У меня есть несколько переменных, которые зависят от ввода пользователя и должны быть доступны и изменены четырьмя различными модулями и основным кодом, поэтому я пытаюсь использовать глобальные (ish) переменные в Python.

У меня есть два пытается установить сделать эту работу:

1) Если я придерживаюсь кода с модифицируемым глобальными переменными в моем основном коде, я бег в вопрос «Выполнение главного модуля дважды», как описано здесь : http://python-notes.curiousefficiency.org/en/latest/python_concepts/import_traps.html Программа работает, за исключением выполнения дважды.

2) Если я создаю отдельный модуль и поместил переменные в функцию, я обнаружил, что у меня есть неопределенные переменные в других моих модулях, и мой код будет выходить из строя. Поступая через код, я вижу, что когда переменные доступны/модифицируются модулем А, но тогда все ломается, когда модуль Б и модуль С пытаются использовать их, потому что модификации не остались.

Как использовать Python для удовлетворения моих потребностей? Я считаю, что моя проблема заключается в попытке использовать глобальные переменные и импортировать глобальные переменные.

ответ

0

Чтобы решить эту проблему, я перестал использовать глобальные переменные для нескольких модулей в своем основном коде и прекратил импорт отдельных переменных. Я в основном закончил размещение модуля А (одной функции) в модуле Б. Я создал класс в модуле Б для функций, которые мне нужны. Теперь основной код и moduleC обращаются к этим функциям.

Я по-прежнему использую глобальные переменные, хотя в рамках функций в модуле Б. Если я сделал переменные не глобальными, я получил ошибки атрибутов.