Python Glossary English

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

exec

выполнение

Выполняет динамически созданный Python-код: строку или code object. Изменяет переданное пространство имён.

Синтаксис

exec(object[, globals[, locals]])

Главная ловушка — вызвать exec('x = 1') внутри функции и ждать, что появится локальная переменная x: компилятор распределяет локальные ещё до запуска, и созданное exec'ом имя коду функции не видно (на уровне модуля, где пространство имён и есть словарь, всё работает). Надёжный приём — отдать exec отдельный словарь и потом достать результат из него: exec(src, g), затем g['x']. Возвращает exec всегда None — значение выражения так не получить, для этого eval.

Примеры

exec('x = 1 + 2')
# print(x)  # x есть в локальном пространстве?
g = {}
exec('y = 42', g)
print(g['y'])  # → 42
exec('for i in range(3): print(i)')  # → 0 1 2
def make_func(name):
    exec(f'def {name}(): return "{name}"', globals())
make_func('hello')
print(hello())  # → hello

См. также

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