Функция exec()
в Python позволяет выполнять произвольный код из строки или скомпилированного ввода кода.
Функция может быть удобной, когда вам нужно запустить динамически генерируемый код Python, но это может быть довольно опасно, если вы используете ее небрежно. В этом уроке вы узнаете не только о том, как использовать, но и, что не менее важно, когда можно использовать эту функцию в своем коде.
Синтаксис:
exec(object, globals, locals)
Аргументы:
object
- строка или объект. Если это строка, то в Python она обрабатывается как блок операторов, а после - выполняется.global
— используется для указания глобальных функций, доступных для выполнения функциейexec()
. Это должен быть словарь. Если__builtins__
не определен, все встроенные модули будут доступны функцииexec
.locals
— используется для указания доступных локальных функций и переменных. Это может быть любой отображаемый объект. Однако словарь предпочтительнее из-за его сходства с глобальными переменными.
Функция exec()
возвращает None
. Поэтому его нельзя использовать с операторами return
и yield
. Вы можете ознакомиться с функцией eval(), она возвращает значение.
Рассмотрим примеры:
exec("name = input('Your name: '); print(f'Hello, {name}!')")
Результат:
<<< Your name: Vladislav
>>> Hello, Vladislav!
Пример:
numbers = [2, 3, 7, 4, 8]
exec("result = sum(number**2 for number in numbers if number % 2 == 0)")
Результат:
>>> 84