Выполнение import *
так, как вы это сделали, является односторонним процессом.Вы импортировали кучу имен, почти так же, как вы это сделали бы:
from mymodule import foo, bar, baz, arr, tee, eff, emm
Таким образом, все они просто назначены именам в глобальной области видимости модуля, где выполняется import
,Что это не делает, это соединяет глобальные пространства имен этих двух модулей.global
означает module-global , а не global-to-all-modules.Таким образом, у каждого модуля может быть своя собственная глобальная переменная fubar
, и присвоение ей не назначит каждому модулю.
Если вы хотите получить доступ к имени из другого модуля, вы должны импортировать его.Итак, в этом примере:
def foo(var1, var2):
global bar
from mainmodule import fubar
bar = fubar(var1)
Выполняя импорт внутри самой функции, вы можете избежать циклического импорта.