exec()
Функция exec() выполняет строку (или скомпилированный объект кода)
как набор Python-инструкций. В отличие от eval(), она работает с
полноценными конструкциями: присваиваниями, циклами, объявлениями функций.
Сама функция всегда возвращает None.
Сигнатура
exec(object, globals=None, locals=None)
Параметры:
object— строка с кодом или объект, полученный изcompile().globals— словарь глобального пространства имён.locals— словарь локального пространства имён.
Возвращает: None. Все эффекты сохраняются в переданных словарях.
Примеры
Выполнение простого блока инструкций:
code = "a = 5\nb = 7\nprint(a + b)"
exec(code)
12
Передача собственного пространства имён:
env = {}
exec("x = 42\ny = x * 2", env)
print(env["x"], env["y"])
42 84
Объявление функции через exec:
src = """
def square(n):
return n * n
"""
ns = {}
exec(src, ns)
print(ns["square"](9))
81
Цикл, генерируемый динамически:
exec("for i in range(3): print('tick', i)")
tick 0
tick 1
tick 2
Ограничение встроенных функций:
restricted = {"__builtins__": {"print": print}}
exec("print('hello from sandbox')", restricted)
hello from sandbox
Предупреждение
Запуск произвольного кода через exec() опасен: код имеет тот же
доступ, что и приложение. Не вызывайте exec() для данных из внешних
источников без полной проверки.
См. также
Примечание
Описание основано на официальной документации Python (docs.python.org), распространяемой под лицензией PSF License v2. © Python Software Foundation.