Найти - Пользователи
Полная версия: Передать данные из импортируемого модуля в импортирующий
Начало » Python для новичков » Передать данные из импортируемого модуля в импортирующий
1 2
Ryoga
Есть некий модуль А (обертка, по сути), вызывающий модуль Б.
В зависимости от результатов работы модуля Б (флаг удачной попытки), модуль А решает, пустить его еще раз через reload(), или хватит.
Вопрос: как передать этот флаг из Б в А?
bismigalis
Ryoga
от результатов работы модуля
модули не работают, работают функции и методы
Ryoga
Прекрасное лингвистическое замечание, которое, тем не менее, никак не помогает в решении проблемы.

Пока в голову пришло лишь достаточно топорное решение - костыль с передачей данных через третий модуль. Т.е. дополнить и обертку, и импортируемый модуль импортом некоего объекта из модуля С (списка из одного элемента, класса с одним атрибутом и т.д.), после чего модуль Б получит возможность, изменив его значение, передать после завершения информацию в А.
FishHook
Ryoga
Прекрасное лингвистическое замечание,
Тем не менее имеющее прямое отношение к вопросу. Вы можете привести пример “вызова модуля из модуля” причем модуль “получает результаты работы модуля” из стандартной библиотеки питона? Какая из известных вам библиотек так делает?
bismigalis
модули для разбиения кода на части.

используй функции
doza_and
FishHook
Прекрасное лингвистическое замечание,
Поупражняемся в лингвистике.

Модуль - код который будет исполнен один раз за время существования процесса python. (Если не извращаться)
Функция - код который можно выполнить много раз за время существования процесса python.

Вам надо выполнить код много раз.

Вопрос к т.с. Почему нельзя использовать функцию?
ZZZ
Я сейчас скажу, что функция тоже может быть модулем… С 2.6, кажется.
bismigalis
ZZZ
функция тоже может быть модулем
WUT?
ZZZ
В sys.modules можно положить всё, что душе захочется. И делать что-то типа так:
import my_super_module
print(my_super_module())
py.user.next
>>> import sys
>>> sys.modules['x'] = lambda: print('x')
>>>
>>> x()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined
>>>
>>> import x
>>> x()
x
>>> type(x)
<class 'function'>
>>> type(sys)
<class 'module'>
>>>
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