Звонить в функции в другом модуле dinámicamente

У меня есть рукописный шрифт в Пайтоне, который читает excel или базы данных, чтобы реализовывать доказательства.

Из-за каждой линии в одной из ячеек находится имя функции, которое нужно использовать, в настоящее время звонит в функции с большим количеством кода и многими if.

Я думал создавать словарь с именем функции и ссылки на эту, но осведомляюсь о, есть ли способ предотвращать этот шаг.

Функции находятся в отдельном модуле, который я импортирую как test_exec.

Я попытался использовать eval()

resultado_de_la_celda = 'get_alarm'
funcion_a_llamar = 'test_exec.' + resultado_de_la_celda
funcion = eval(funcion_a_llamar)
funcion(parametros)

однако eval() он говорит мне, что у модуля нет так называемого метода

AttributeError: модулируйте 'тест' ты существуешь не attribute 'get_alarm'

и модуль test если у него есть функция, определенная с именем get_alarm

Идея состоит в том, чтобы делать то же самое со всеми функциями test и уже помещенные мочь использовать ту же методологию в других scripts.

3
задан 29.05.2019, 14:47
1 ответ

В той же линии, которую я показываю себе abulafia в Вашем ответе, я закончил тем, что делал следующее:

if accion in test_exec.__dict__:
    funcion = eval('test_exec.' + accion)
    resultado = funcion(**parametros)
else:
    msg = 'La función %s no existe' % accion
    print(msg)

в коде test_exec из-за каждой функции я поместил:

def funcion(parametro1, parametro2, parametro[n], *args, **kargs):
    do_stuff()

Таким образом parГЎmetros может быть единственный аргумент, список, tupla, словарь или смесь все предыдущего

2
ответ дан 02.12.2019, 22:59

Теги

Похожие вопросы