Создать функцию по значению переменной

Допустим, у меня есть переменная 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
→ Ссылка