Вот что делает функция "eval" в Python.
result = eval(expression)
Остерегайтесь, хотя он может делать намного больше, в первую очередь вызывать функции, поэтому, чтобы быть в безопасности, вы должны убедиться, что он не может получить доступ к локальным или глобальным объектам. Кроме того, вы можете получить доступ к встроенным методам, включая хитрый import , поэтому вам также необходимо заблокировать доступ к нему:
result = eval(expression, {'__builtins__': None}, {})
Но это только в том случае, если вам нужна безопасность, то есть если вы позволяете кому-либо вводить любое выражение.
Конечно, поскольку вы таким образом блокируете все переменные locla от использования, у вас нет никаких переменных для использования, поэтому для этого вам нужно передать только те переменные, к которым следует обращаться в словарях.
vars = {'__builtins__': None, 'x': x}
result = eval(expression, vars, {})
или аналогичный.