Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 30, 2014 18:06:06

Ryoga
Зарегистрирован: 2014-02-01
Сообщения: 20
Репутация: +  1  -
Профиль   Отправить e-mail  

Передать данные из импортируемого модуля в импортирующий

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

Офлайн

#2 Сен. 30, 2014 18:28:52

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Передать данные из импортируемого модуля в импортирующий

Ryoga
от результатов работы модуля
модули не работают, работают функции и методы

Офлайн

#3 Сен. 30, 2014 19:26:22

Ryoga
Зарегистрирован: 2014-02-01
Сообщения: 20
Репутация: +  1  -
Профиль   Отправить e-mail  

Передать данные из импортируемого модуля в импортирующий

Прекрасное лингвистическое замечание, которое, тем не менее, никак не помогает в решении проблемы.

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

Офлайн

#4 Сен. 30, 2014 19:32:53

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Передать данные из импортируемого модуля в импортирующий

Ryoga
Прекрасное лингвистическое замечание,
Тем не менее имеющее прямое отношение к вопросу. Вы можете привести пример “вызова модуля из модуля” причем модуль “получает результаты работы модуля” из стандартной библиотеки питона? Какая из известных вам библиотек так делает?



Офлайн

#5 Сен. 30, 2014 19:34:08

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Передать данные из импортируемого модуля в импортирующий

модули для разбиения кода на части.

используй функции

Офлайн

#6 Сен. 30, 2014 20:25:18

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Передать данные из импортируемого модуля в импортирующий

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

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

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

Вопрос к т.с. Почему нельзя использовать функцию?



Отредактировано doza_and (Сен. 30, 2014 20:26:03)

Офлайн

#7 Сен. 30, 2014 21:05:59

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Передать данные из импортируемого модуля в импортирующий

Я сейчас скажу, что функция тоже может быть модулем… С 2.6, кажется.



Офлайн

#8 Сен. 30, 2014 21:18:29

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Передать данные из импортируемого модуля в импортирующий

ZZZ
функция тоже может быть модулем
WUT?

Офлайн

#9 Сен. 30, 2014 22:46:26

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Передать данные из импортируемого модуля в импортирующий

В sys.modules можно положить всё, что душе захочется. И делать что-то типа так:

import my_super_module
print(my_super_module())



Офлайн

#10 Сен. 30, 2014 23:03:14

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Передать данные из импортируемого модуля в импортирующий

>>> 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'>
>>>



Отредактировано py.user.next (Сен. 30, 2014 23:03:51)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version