как иметь глобальные переменные среди разных модулей в Python - PullRequest
2 голосов
/ 19 февраля 2010

Я исследовал, что область действия глобальных переменных в python ограничена модулем. Но мне нужно, чтобы область была глобальной среди разных модулей. Что-то подобное существует? Я играл около __builtin__, но не повезло.

спасибо заранее!

Ответы [ 3 ]

6 голосов
/ 19 февраля 2010

Вы можете получить доступ к глобальным переменным из других модулей, импортировав их явно.

В модуле foo:

  joe = 5

В модуле bar:

  from foo import joe
  print joe

Обратите внимание, что это не рекомендуется.Гораздо лучше скрыть доступ к переменным модуля с помощью функций.

3 голосов
/ 19 февраля 2010

Python не поддерживает глобальные переменные, совместно используемые несколькими модулями: это функция . Код, который неявно изменяет переменные, используемые далеко, сбивает с толку и не поддерживается. Решение real состоит в том, чтобы инкапсулировать все состояния внутри класса и передать его экземпляр всему, что должно его изменить. Это может сделать код более понятным, более понятным, более тестируемым, более модульным и более затратным.

0 голосов
/ 19 февраля 2010

Области за пределами локальной области должны записываться посредством ссылки на область действия или после директивы global или nonlocal (3.x +).

...