Форум сайта python.su
как из загружаемого модуля получить доступ к функции, определенной в загружающем модуле?
при запуске файла module1 выводит:
NameError: global name ‘function1’ is not defined
знаю только что execfile('module2.py') поможет.
есть ли более человеческий способ? (не ломая структуру имен module2.function2)
module1.py:
def function1():
print 'blabla'
import module2
module2.function2()
module2.py:
def function2():
function1()
Отредактировано (Дек. 8, 2008 14:29:56)
Офлайн
Цикличные импорты можно побороть только пересторив оба модуля так, что бы их не было.
Офлайн
FerromanВ принципе можно сделать и цикличный вызов, но сие не есть гуд.
Цикличные импорты можно побороть только пересторив оба модуля так, что бы их не было.
Офлайн
Должен существовать один — и, желательно, только один — очевидный способ сделать это. (с) Великодушный Диктатор.
Офлайн
Или я не понял в чем дело или так:
module2.py:
def function2():
from module1 import function1
function1()
Офлайн
zope.deferredimport допоможе
Офлайн
Тут есть неплохая статья по этому поводу: http://effbot.org/zone/import-confusion.htm
Офлайн
взагалі краще переробити модулі але коли все дуже заплутано то є http://pypi.python.org/pypi/zope.deferredimport/3.4.0
Офлайн