Динамически исполняет указанный код.
exec(obj[, globals[, locals]])
-> None
obj -- Строка кода, либо объект кода. Поддерживается ввод данных из файлов (считываются до EOF). Если передана строка, она разбирается в набор инструкций, который потом исполняется (если отсутствуют синтаксические ошибки). Если передан объект кода, то он исполняется. +py2 Необязательные аргументы (см. ниже) могут быть указаны в виде кортежа прямо после инструкции.

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

locals -- Ожидается объект-отображение (например, dict). Локальное пространство, в котором следует исполнить код.

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

    x = 1
exec('x = 2')
x # 2

На заметку
Функциям exec() и eval() можно передавать результаты функций globals() и locals().

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

Внимание
Помните, что инструкции return и yield не могут быть использованы вне определений функций, даже в контексте кода, переданного в exec(). Возвращаемое значение — None.

Внимание
Помните, что на уровне модуля globals и locals — один и тот же словарь. Если функция получит разные объекты в globals и locals, код будет исполнен, как если бы он был расположен в объявлении класса.


Переход на Python 3


    exec expr in globals  # Эквивалентен exec(expr, globals)
exec expr in globals, locals # Эквивалентен exec(expr, globals, locals)

Синонимы поиска: exec
На заметку
У нас есть представительство в Facebook. Ссылка в самом низу страницы.