Python: сделать eval безопасным [дубликат]

На этот вопрос уже есть ответ:

Python eval: все же опасно ли отключать встроенные функции и доступ к атрибутам? 6 ответов

Я хочу простой способ создания "API калькулятора" в Python.

Прямо сейчас меня не волнует, какой именно набор функций будет поддерживать калькулятор.

Я хочу получить строку, скажем"1+1" и вернуть строку с результатом, в нашем случае"2".

Есть ли способ сделатьeval безопасно для такой вещи?

Для начала я бы сделал

env = {}
env["locals"]   = None
env["globals"]  = None
env["__name__"] = None
env["__file__"] = None
env["__builtins__"] = None

eval(users_str, env)

чтобы вызывающий не мог связываться с моими локальными переменными (или видеть их).

Но я уверен, что здесь много слежу.

Являютсяevalсправлены проблемы с безопасностью @ или слишком много мелких деталей, чтобы все работало правильно?

Ответы на вопрос(4)

Ваш ответ на вопрос