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.