Я хочу простой способ сделать "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
исправлены или есть слишком много мелких деталей, чтобы заставить его работать правильно?