У меня есть вопрос, связанный с областью видимости в python. Ниже приведен фрагмент кода:Область/пространство имен Python для всех модулей
файл: settings.py
#module settings
fruit = 'banana'
def set_fruit(val):
global fruit
print 'Setting fruit ', fruit, ' to ', val
fruit = val
файл: helper.py
#module helper
from settings import fruit
class Helper(object):
def __init__(self):
print 'Inside Helper fruit = ', fruit
файл: controller.py
#module controller
import settings
import helper
class Controller(object):
def __init__(self):
settings.set_fruit('apple')
print 'Controller: settings.fruit = ', settings.fruit
Controller()
print 'fruit = ', settings.fruit
helper.Helper()
settings.py
имеет глобальные настройки которые используются различными модулями. Некоторые из этих параметров необходимо изменить во время запуска контроллером. Я хочу знать, почему настройки, измененные контроллером, не видны другим, в этом случае - вспомогательному модулю.
Вот вывод, что я получаю:
$ python controller.py
Setting fruit banana to apple
Controller: settings.fruit = apple
fruit = apple
Inside Helper fruit = banana
Спасибо за быстрый ответ. Что объясняет его. – TRam