Функция exec() в Python и примеры

Функция exec() Python выполняет программу, которая представляет строку или объект кода.

Что такое exec() в Python?

Метод exec() в Python выполняет динамически созданную программу, которая является либо строкой, либо объектом кода. Если это объектный код, он просто выполняется, но если это строка, то она анализируется как набор операторов Python, который затем выполняется; в противном случае возникает синтаксическая ошибка.

Пример функции exec() в Python

Синтаксис

  • object: Здесь объект является либо строкой, либо объектом кода.
  • globals: это может быть словарь, и этот параметр является необязательным.
  • locals: это может быть объект сопоставления, и это необязательное поле.

Функция exec() Python ничего не возвращает.

Как работает exec() на примере

Рассмотрим выполнение функции exec() в Python на примере.

См. следующий код.

Выход:

Здесь строковый объект prog передается в exec(), и он выполняется.

Передача глобального и локального словаря

См. следующий код.

Выход:

Здесь, в этом примере, мы видим, что мы передаем пустой словарь в качестве параметра функции exec(), и отображается только __builtin__ , а никакие другие математические функции не отображаются. Глобальный параметр опережает локальный параметр, поскольку он пуст.

Но мы можем передавать глобальные и локальные параметры вместе в простом операторе. Давайте посмотрим на пример ниже.

Выход:

Итак, мы видим, что, используя локальные параметры, мы можем реализовать нашу функцию в соответствии с нашими потребностями. Здесь print, sum — напечатаны.

Кроме того, мы можем ограничить использование метода __builtin__ следующим образом.

Выход:

Итак, здесь мы видим, что отображаются только dir, print и sum.

Предостережения при использовании exec()

Рассмотрим ситуацию: вы используете систему Unix (macOS, Linux и т. д.) и импортировали модуль os.

Модуль os предоставляет портативный способ использования функций операционной системы, таких как чтение или запись файла. Если вы разрешите пользователям вводить значение с помощью exec(input()), пользователь может давать команды для изменения файлов или даже удалять все файлы с помощью этой команды.

Если вы используете exec(input()) в своем коде, рекомендуется проверить, какие переменные и методы могут использовать пользователи. Вы можете увидеть, какие переменные и методы доступны, используя метод dir().

Чаще всего все доступные методы и переменные, используемые в exec(), могут быть не нужны или даже могут иметь дыру в безопасности. Вы можете ограничить использование этих переменных и методов, минуя необязательные глобальные и локальные параметры(словари) для метода exec().

Выполнение динамического кода Python exec()

Давайте посмотрим на другой пример, где пользователь вводит код, который будет выполняться нашей программой.

Выход:

Оцените статью

Автор статей и разработчик, делюсь знаниями.

Программирование на Python