Найти - Пользователи
Полная версия: пространства имен
Начало » Python для новичков » пространства имен
1
Witt
как из загружаемого модуля получить доступ к функции, определенной в загружающем модуле?

при запуске файла 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()
Ferroman
Цикличные импорты можно побороть только пересторив оба модуля так, что бы их не было.
balu
Ferroman
Цикличные импорты можно побороть только пересторив оба модуля так, что бы их не было.
В принципе можно сделать и цикличный вызов, но сие не есть гуд.
Ferroman
Должен существовать один — и, желательно, только один — очевидный способ сделать это. (с) Великодушный Диктатор.
bw
Или я не понял в чем дело или так:

module2.py:
def function2():
from module1 import function1
function1()
..bw
crchemist
zope.deferredimport допоможе
Ferroman
Тут есть неплохая статья по этому поводу: http://effbot.org/zone/import-confusion.htm
crchemist
взагалі краще переробити модулі але коли все дуже заплутано то є http://pypi.python.org/pypi/zope.deferredimport/3.4.0
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB