Chcę w łatwy sposób zrobić "API kalkulatora" w Pythonie.Python: make eval safe
W tej chwili nie obchodzi mnie dokładnie zestaw funkcji obsługiwanych przez kalkulator.
Chcę, aby otrzymał ciąg znaków, powiedzmy "1+1"
i zwróć ciąg znaków z wynikiem, w naszym przypadku "2"
.
Czy istnieje sposób, aby uczynić eval
bezpiecznym dla takich rzeczy?
Na początek chciałbym zrobić
env = {}
env["locals"] = None
env["globals"] = None
env["__name__"] = None
env["__file__"] = None
env["__builtins__"] = None
eval(users_str, env)
tak, że rozmówca nie bałagan z moich lokalnych zmiennych (lub ich zobaczyć).
Ale jestem pewien, że wiele tutaj nadzoruję.
Czy można naprawić problemy związane z bezpieczeństwem eval
lub czy istnieje zbyt wiele drobnych szczegółów, aby działało poprawnie?
Zobacz także: http://stackoverflow.com/questions/594266/equation-parsing-in-python – kennytm
Czy może to rozwiązać problem https://github.com/odoo/odoo/blob/d7cfa8c502f27bee5c2fccb35db47b08e3b3804b/odoo/ tools/safe_eval.py – bkmagnetron