Сохраните функции в словаре и вызывайте функции с правильным количеством аргументов.Ничего особенного делать не нужно.
def func1():
print("Function 1 - no args")
def func2(a):
print("Function 2 got arg", a)
def func3(r, g="green", b="blue"):
print("Function 3 got %r, %r and %r" % (r,g,b))
d = { "1": func1,
"2": func2,
"3": func3 }
d["1"]()
d["2"]("Hello")
Вы можете даже inspect
функции в словаре, чтобы получить сигнатуру метода (позиционные аргументы и аргументы ключевых слов, а также значения по умолчанию).
import inspect
f = d["3"]
sig = inspect.signature(f)
ba = sig.bind("red", g="gray")
ba.apply_defaults()
f(*ba.args, **ba.kwargs)
Вывод:
Функция 1 - без аргументов
Функция 2 получила аргумент Hello
Функция 3 получила «красный», «серый» и «синий»