Сообщить об ошибке.

Позволяет выполнить строку-выражение с кодом на Python

Синтаксис:

eval(expression, /, globals=None, locals=None)

Параметры:

  • expression - строка-выражение, которую требуется исполнить. Либо объект кода, что возвращает compile(),
  • globals=None - словарь глобального пространства, относительно которого следует исполнить выражение,
  • locals=None - переменные локального пространства, в котором следует исполнить выражение.

Изменено в Python 3.13: аргументы globals и locals теперь могут передаваться как ключевые слова.

Возвращаемое значение:

  • результат выполнения строки-выражения.

Описание:

Функция eval() выполняет строку-выражение, переданную ей в качестве обязательного аргумента и возвращает результат выполнения этой строки.

Аргументами eval() являются строка-выражение expression, которую требуется исполнить и необязательные глобальные globals и локальные locals значения. Передаваемые в функцию глобальные переменные должны быть словарем dict. Передаваемые локальные переменные могут быть любым отображающим объектом.

Если глобальные переменные указаны, но словарь globals не содержит атрибута __builtins__ данные переданного словаря со значениями будут дополнены данными общего глобального пространства, перед разбором выражения. Таким образом, выражение будет иметь доступ ко всем встроенным модулям.

Если локальные locals переменные не указаны, то используется словарь глобального пространства.

Если оба словаря опущены, выражение выполняется с глобальными и локальными значениями в среде, где функция eval() вызывается.Обратите внимание, eval() будет иметь доступ только к вложенным областям (нелокальным) во внешней среде, если на них уже есть ссылки в области, которая вызывает eval() (например, с помощью оператора nonlocal).

>>> x = 1
>>> eval('x+1')
# 2

Изменено в Python 3.13: семантика пространства имен locals по умолчанию была скорректирована, как описано для встроенной функции locals().

Функция eval() также может быть использована для выполнения кода, который возвращает функция compile(). Если объект кода в compile() собран в режиме exec будет возвращено None.

Подсказка: динамическое выполнение инструкций поддерживается функцией exec(). Функции globals() и locals() возвращают текущий глобальный и локальный словарь соответственно, который может быть полезен для передачи eval() или exec().

Если заданный источник является строкой, то начальные и конечные пробелы и табуляции удаляются.

Если необходимо выполнить динамический код, записанный в строку, то обратитесь к документации по функции exec().

Примеры выполнения строки-выражения с кодом функцией eval().

>>> x = "print('Привет')"
>>> eval(x)
# Привет

>>> y = 'print("5 + 10 =", (5+10))'
>>> eval(y)
# 5 + 10 = 15

>>> s=3
>>> eval('s==3')
# True
>>> eval('s + 1')
# 4
>>> eval('s')
# 3
>>> eval('str(s)+"test"')
# '3test'