Найти - Пользователи
Полная версия: Запись адреса функции из модуля
Начало » Python для новичков » Запись адреса функции из модуля
1
python999
Нужно создать словарь { имя функции : адрес функции }
сами функции находятся в отдельном модуле

 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 непонятно как применять)
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']()
Или имена заранее неизвестны?
Тогда 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']
PooH
knkd
Или имена заранее неизвестны?
Тогда dir(f) - ненадёжно.
Ну зачем же так грязно? можно же всегда проверить:
dict((key, value) for key, value in math.__dict__.iteritems() if callable(value))
python999
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']()
Или имена заранее неизвестны?
этот код прекрасен, но проблема в том, что функции здесь надо прописывать вручную.
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