Форум сайта python.su
-1
Есть ОСНОВНОЙ_МОДУЛЬ.
В нем определна ФУНКЦИЯ
ОСНОВНОЙ_МОДУЛЬ импортирует ДРУГОЙ_МОДУЛЬ при помощи
from ДРУГОЙ_МОДУЛЬ import ДРУГАЯ_ФУНКЦИЯ
def ДРУГАЯ_ФУНКЦИЯ()
ФУНКЦИЯ()
NameError: global name 'ФУНКЦИЯ' is not defined
Отредактировано andrei186 (Фев. 7, 2016 23:58:54)
Офлайн
49
Вы прям так код и пишите?
Офлайн
-1
4kpt_IVпрям так это как? Если в смысле кириллицы, то нет
Вы прям так код и пишите?
Офлайн
1
from ДРУГОЙ_МОДУЛЬ import ДРУГАЯ_ФУНКЦИЯ, ФУНКЦИЯ
Офлайн
-1
kampellaФУНКЦИЯ опредлена в ОСНОВНОМ_МОДУЛЕ
from ДРУГОЙ_МОДУЛЬ import ДРУГАЯ_ФУНКЦИЯ, ФУНКЦИЯ
Офлайн
24
А с какого перепугу оно должно работать. Если ты не понимаешь как работает импорт, то тебе нужно читать книгу, там должно быть про это написано.
Офлайн
-1
aybА можно чуть подробнее, почему именно не должно работать?
А с какого перепугу оно должно работать. Если ты не понимаешь как работает импорт, то тебе нужно читать книгу, там должно быть про это написано.
Отредактировано andrei186 (Фев. 8, 2016 09:09:15)
Офлайн
568
andrei186
Вы импортируете ФУНКЦИЮ, ничего кроме ФУНКЦИИ вы не импортируете и поэтому не получите. Нужна другая функция -импортируйте её отдельно. Так устроен импорт в питоне.
Офлайн
-1
FishHookранее мне сказали, что конструкция from…import f2 импортирует функцию f2(), но при этом еще и выполняет весь код, прописанный в импортируемом модуле.
Вы импортируете ФУНКЦИЮ, ничего кроме ФУНКЦИИ вы не импортируете и поэтому не получите.
#importING_module.py
from importED_module import f2
def f1():
какой-то код
#importED_module.py
def f2():
f1()
f2()
#importING_module.py
def f2()
f1()
f2()
def f1()
какой-то код
FishHookКакая другая функция, что она должна делать и в каком модуле определена?
Нужна другая функция -импортируйте её отдельно.
Отредактировано andrei186 (Фев. 8, 2016 11:19:41)
Офлайн
186
> Почему этот вызов возвращает…и как это победить?
Это особенность устройства функций. У каждой функции есть ссылка на глобальное пространство имён в котором она определена и функция использует только это пространство, а не тот контекст из которого её вызывают.
Вот как это можно победить (хреновый способ):
#p2.py def foo2(): foo()
#p1.py from p2 import foo2 def foo(): print "be-be-be" foo2.func_globals.update({"foo":foo}) foo2()
#p2.py def foo2(): foo2.foo()
#p1.py from p2 import foo2 def foo(): print "be-be-be" foo2.func_dict.update({"foo":foo}) foo2()
Отредактировано Rodegast (Фев. 8, 2016 11:33:46)
Офлайн