eval()
Функция eval() принимает строку с одним Python-выражением, разбирает
её и вычисляет результат в текущем контексте. Подходит для вычисления
формул из текста, но небезопасна при работе с произвольным пользовательским
вводом.
Сигнатура
eval(expression, globals=None, locals=None)
Параметры:
expression— строка или объект кода с одним выражением.globals— словарь глобальных имён. ЕслиNone, используется текущее пространство имён.locals— словарь локальных имён. По умолчанию совпадает сglobals.
Возвращает: значение, полученное в результате вычисления выражения.
Примеры
Простое арифметическое выражение:
result = eval("2 + 3 * 4")
print(result)
14
Использование переменных из текущей области:
x = 10
y = 5
print(eval("x ** 2 + y"))
105
Ограничение доступных имён через словарь globals:
safe_env = {"__builtins__": {}, "pi": 3.14159}
print(eval("pi * 2", safe_env))
6.28318
Калькулятор формул для пользователя (демо, не для production):
formula = "(a + b) / 2"
values = {"a": 8, "b": 12}
print(eval(formula, {"__builtins__": {}}, values))
10.0
Вычисление литерала структуры данных:
text = "[1, 2, 3, 4]"
data = eval(text)
print(data, type(data))
[1, 2, 3, 4] <class 'list'>
Предупреждение
Никогда не передавайте в eval() строки от непроверенного источника:
они могут содержать вредоносный код. Для безопасного парсинга литералов
используйте ast.literal_eval().
См. также
Примечание
Описание основано на официальной документации Python (docs.python.org), распространяемой под лицензией PSF License v2. © Python Software Foundation.