Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 13, 2010 21:07:16

python999
От:
Зарегистрирован: 2010-11-13
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись адреса функции из модуля

Нужно создать словарь { имя функции : адрес функции }
сами функции находятся в отдельном модуле

 def import_function(self):
import f
f_name = dir(f)[5:]
f_adrs = [('f.'+i) for i in f_name]
f_ = zip(f_name,f_adrs))
self.functions = dict(f_)
неробит так как незнаю как вытащить из модуля адрес функции.
(exec непонятно как применять)



Офлайн

#2 Ноя. 14, 2010 01:14:30

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись адреса функции из модуля

Адрес ненужен. Его и нет вовсе.
Точкой доступа к функции является просто её имя.

from module import function_0, function_1, function_2

_dict = {'name_0':function_0, 'name_1':function_1, 'name_2':function_2}

dic['name_0']()
Или имена заранее неизвестны?
Тогда dir(f) - ненадёжно.

>>> dir(m)
['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'hypot', 'isinf', 'isnan', 'ldexp', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']



Офлайн

#3 Ноя. 14, 2010 12:09:18

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Запись адреса функции из модуля

knkd
Или имена заранее неизвестны?
Тогда dir(f) - ненадёжно.
Ну зачем же так грязно? можно же всегда проверить:
dict((key, value) for key, value in math.__dict__.iteritems() if callable(value))



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#4 Ноя. 14, 2010 15:48:55

python999
От:
Зарегистрирован: 2010-11-13
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись адреса функции из модуля

knkd
Адрес ненужен. Его и нет вовсе.
Точкой доступа к функции является просто её имя.
from module import function_0, function_1, function_2

_dict = {'name_0':function_0, 'name_1':function_1, 'name_2':function_2}

dic['name_0']()
Или имена заранее неизвестны?
этот код прекрасен, но проблема в том, что функции здесь надо прописывать вручную.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version