Как вызвать функцию передав название функции как строку в 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')
→ Ссылка