Как вызвать функцию передав название функции как строку в python?
У меня есть функция:
async def regedit():
return 'dino is run!'
И есть переменная в которую помещено название функции, типа строки:
foo = 'regedit'
Моя задача вызвать функцию regedit() передав строку или переменную при вызове самой функции, я хотел бы сделать что-то подобное:
await foo()
Также я должен иметь возможность передавать аргументы функции, пример:
foo_name = 'geter'
arg1, arg2 = '1', '2'
async def geter(arg1, arg2):
return arg1, arg2
if __name__ == '__main__':
result = asyncio.run(foo_name(arg1, arg2))
prin(result) # 1, 2
Ранее я пытался найти ответы и нашёл один вопрос идентичный моему - ссылка однако ответ на вопрос вовсе не рабочий и я не знаю даже как его приняли.
P.s - не стоит интересоваться и писать зачем вызывать так функцию и прочее, мне необходим только ответ на вопрос.
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Можно через globals получить объект по имени:
foo_name = 'geter'
arg1, arg2 = '1', '2'
def geter(arg1, arg2):
return arg1, arg2
globals()[foo_name](arg1, arg2)
Вывод:
('1', '2')
Автор решения: SergFSM
→ Ссылка
Решение, которое вы нашли по ссылке вполне рабочее:
foo_name = 'geter'
arg1, arg2 = '1', '2'
def geter(arg1, arg2):
return arg1, arg2
funcs={'geter':geter}
funcs[foo_name](arg1,arg2)
вывод:
('1', '2')