Итак, я читаю ответ Алекса Мартелли на другой вопрос...
«Один пример, в котором мне может понадобиться инициализация, — это когда во время загрузки пакета я хочу раз и навсегда прочитать кучу данных (скажем, из файлов, БД или Интернета) — в этом случае это намного приятнее. поместить это чтение в приватную функцию в init.py пакета вместо того, чтобы иметь отдельный «модуль инициализации» и избыточно импортировать этот модуль из каждого отдельного реального модуля в пакете...»
К сожалению, когда я пытаюсь это сделать:
foo/__init__.py
import tables as tb
global foo
foo = tb.openFile('foo.h5', etc._)
import bar
foo/bar/__init__.py
import tables as tb
global bar
bar = foo.createGroup('/', bar)
import MyFunction`
foo/bar/MyFunction.py
def MyFunction(*of foo and bar*):
'...'
>>> import foo
>>> OUTPUT= foo.bar.MyFunction.MyFunction(INPUT)
>>> bar = foo.createGroup('/', bar)
NameError: name 'foo' is not defined
Как определить глобальные переменные, не помещая их в функцию (как показано здесь)?