Поскольку python поддерживает некоторые алгебраические формы, вы можете сделать:
eval("1 + 1")
Но это позволяет вводу выполнить все, что определено в вашем env:
eval("__import__('sys').exit(1)")
Кроме того, если вы хотите поддерживать что-то, что Python не поддерживает, подход не работает:
x³ + y² + c
----------- = 0
z
Вместо этого вы можете реализовать токенизатор и парсер с ply . Оценка вещи типа «1 + 1» не должна занимать более десяти строк или около того.
Вы также можете реализовать токенизатор и парсер вручную. Читайте о LL и LR парсерах. Прежде чем пытаться это сделать, лучше сначала научиться использовать генераторы парсеров.