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