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