Как динамически создавать функцию в Python?Python: динамически создавать функцию во время выполнения
Я видел здесь несколько ответов, но я не мог найти тот, который описывает самый общий случай.
Рассмотрим:
def a(x):
return x + 1
Как создать такую функцию на лету? У меня есть compile('...', 'name', 'exec')
это? Но что тогда? Создание фиктивной функции и замена ее объекта кода на один из шагов компиляции?
Или использовать types.FunctionType
? Как?
Я хотел бы настроить все: количество аргументов, их содержание, код в теле функции, в результате ...
возможно дубликат [Истинные динамических и анонимных функций, возможных в Python?] (Http://stackoverflow.com/questions/10303248/true-dynamic-and-anonymous-functions-possible-in-python) –
Я не думаю, что это дубликат: 'dynf = FunctionType (compile ('def f (x): return x + 3', 'dyn.py', 'exec'), globals())' и 'print dynf (1) 'breaks with' TypeError: '() не принимает никаких аргументов (1 задано)' ' –
Просто потому, что ответ может быть неправильным, не означает, что это не дублирующий вопрос. –