Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 26, 2013 18:21:19

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Аналог execfile для исполнения не из файла

Зачем import так и не понял. Чтобы обращение в коде как в модуле было?

Можно вот так:

import types
 
test = types.ModuleType("test")
exec """
a = 3
def foo(c):
    print c
""" in test.__dict__
print test.a
test.foo("it works")

upd
alexeyvanzhula
Нужно скрипт передать из одного питона другому по определенному порту, не используя при этом файловую систему. Но это уже другая история…
А вот с этим аккуратнее.

Отредактировано reclosedev (Фев. 26, 2013 18:24:20)

Офлайн

#2 Фев. 26, 2013 18:33:49

alexeyvanzhula
Зарегистрирован: 2012-05-14
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Аналог execfile для исполнения не из файла

reclosedev
Зачем import так и не понял. Чтобы обращение в коде как в модуле было?Можно вот так:

Блин. То шо доктор прописал! Спасибо вам добрые люди !!!

ПС. Зачем такой import? Для того же самого - чтобы не использовать файлы во время передачи команд. Это длинная история )

Офлайн

#3 Фев. 27, 2013 21:27:27

krishnarama
Зарегистрирован: 2013-02-27
Сообщения: 51
Репутация: +  -36  -
Профиль   Отправить e-mail  

Аналог execfile для исполнения не из файла

reclosedev
test = types.ModuleType("test")
Может сразу
test = __import__('test')
?

И exec не всегда зло, в консоли файлы отлаживать, например.

Отредактировано krishnarama (Фев. 27, 2013 21:28:20)

Офлайн

#4 Фев. 28, 2013 16:22:14

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Аналог execfile для исполнения не из файла

krishnarama
Может сразу
test = __import__('test')
__import__ импортирует существующий модуль, test - неудачное имя для примера, он есть в стандартной библиотеке.
In [1]: __import__("asdfasdf")
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-9bc88631442a> in <module>()
----> 1 __import__("asdfasdf")
ImportError: No module named asdfasdf
In [2]: import types
In [3]: types.ModuleType("asdfasdf")
Out[3]: <module 'asdfasdf' (built-in)>

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version