exec(object, globals=None, locals=None, /, *, closure=None)

Динамически исполняет код object.

Параметр object — это строка кода, либо объект кода. Поддерживается ввод данных из файлов (считываются до EOF). Если передана строка, она разбирается в набор инструкций, который потом исполняется (если отсутствуют синтаксические ошибки). Если передан объект кода, то он исполняется. Необязательные аргументы (см. ниже) могут быть указаны в виде кортежа прямо после инструкции.

Параметр globals должен быть словарем глобального пространства, относительно которого следует исполнить код. Если словарь не имеет значения по ключу __builtins__, на это место вставляется ссылка на значение аналогичного атрибута глобального пространства. Модифицировав __builtins__ словаря передаваемого в функцию, вы можете контролировать, какие из встроенных инструментов будут доступны коду.

Параметр locals также должен быть словарем. Это локальное пространство, в котором следует исполнить выражение. Если не указано, то используется словарь глобального пространства. Если не указан ни globals, ни locals, то выражение будет выполнено в среде, где был осуществлён вызов функции.

Если дополнительные параметры опущены, код исполняется в текущем пространстве.

Не следует пытаться модифицировать словарь locals (см. описание locals). Если требуется влияние кода, исполненного exec на локальную область, явно передавайте словарь locals.

Параметры

Функция exec() принимает три параметра:

  • object — либо строка, либо объект кода
  • globals (необязательно) — словарь
  • locals (необязательно) — объект сопоставления (обычно словарь)

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

  • функция exec() не возвращает никакого значения.

Примеры

program = 'a = 7\nb=12\nprint("Sum =", a+b)'
exec(program)

# Результат: 

Sum = 19