Создать функцию по значению переменной
Допустим, у меня есть переменная func_name = 'qwerty'.
Мне нужно сделать:
def qwerty():
Используя переменную func_name.
Ответы (3 шт):
Автор решения: Павел
→ Ссылка
Динамическое создание функций - достаточно известная задача, самое правильное решение - фабричный метод/класс.
Динамическое создание функции с именем из переменной можно выполнить, например, при помощи конструкции exec:
func_name = 'qwerty'
exec(f"def {func_name}(): pass")
print(qwerty()) # None
Автор решения: splash58
→ Ссылка
вообще, это выглядит как ошибка проектирования, но можно использовать такой "ужасный" код, сохранив в переменную заранее заготовленный шаблон функции
def template(a):
print(a)
func_name = 'qwerty'
globals()[func_name] = template
qwerty(25)
Автор решения: CrazyElf
→ Ссылка
Ну и через lambda тоже можно, а там уже смотря что функция делать должна:
globals()[func_name] = lambda x: x * 2