У меня есть набор функций, которые я хочу использовать для ограничения питонов eval (). Проблема в том, что некоторые из разумных входных данных для этого процесса - это оцениваемые операторы, которые я не хочу. Основываясь на других ответах, я попытался удалить встроенные и локальные объекты, но операторы все еще оцениваются. Как получить eval, чтобы ТОЛЬКО использовать предоставляемые мной функции?
def foo(a,b):
return str(a) + '*' + str(b)
kwards = {'foo':foo}
eval("foo(2,2)*2", {'__builtins__':None}, kwards)
'2*22*2'
Желаемый выход: '2 * 2 * 2'