Python Glossary English

все Python 3Встроенные функциипонятие

eval

выполнение

Вычисляет выражение из строки. ВНИМАНИЕ: небезопасен для ненадёжного ввода!

Синтаксис

eval(expression[, globals[, locals]])

eval считает ровно одно выражение и возвращает его значение — присваивания, if и циклы туда не пролезут, для них нужен exec. Ограничить вред подменой globals не выйдет: даже из урезанного словаря добираются до встроенных функций и __import__, поэтому единственная защита — не пускать в eval чужие строки. Когда надо разобрать введённое число или литерал, берите int(), float() или ast.literal_eval(), который понимает только константы и не исполняет код.

Примеры

print(eval('2**10'))  # → 1024
print(eval('[x**2 for x in range(5)]'))  # → [0,1,4,9,16]
x = 10
print(eval('x + 5'))  # → 15
print(eval('1+2', {}))  # → 3 (пустой globals)
print(eval('abs(-5)', {'abs':abs}))  # → 5

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности