code = "def foo(): return 'bar'"
def lol(code):
exec code
return foo
a = lol(code)
print a()
Это нормально работает, но проблема начинается, когда мы не знаем, как вызывается функция в строке. Если я могу гарантировать, что код будет небольшим, с одной функцией, как я могу вернуть эту функцию?Возврат функции неизвестного имени из функции
Одно из решений, о которых я думал, просто требовало, чтобы функция называлась «foo» и т. Д., Поэтому я могу просто вернуть это, но это кажется уродливым.
Мысли?
Использование 'exec' для генерации динамического кода как правило, неодобрительно. Я бы пересмотрел код таким образом, чтобы он не нуждался в 'exec'. – hek2mgl
Я не могу придумать другой способ оценить строку в коде Python. – Awn