У меня есть рукописный шрифт в Пайтоне, который читает 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.
В той же линии, которую я показываю себе 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, словарь или смесь все предыдущего