Функции exec() и eval() в Python | Чем опасны?
Исполнение кода в Python: От интерактивной оболочки до байт-кода
Python — интерпретируемый язык с динамической типизацией, и его гибкость во многом определяется моделью выполнения кода. В этой статье мы разберем, как работает исполнение Python: от интерактивных оболочек до виртуальной машины, а также рассмотрим ключевые модули и файлы. REPL (Read-Eval-Print Loop) — это интерактивный режим, запускаемый командой `python` в терминале. Каждая введенная строка кода: 1. Читается (парсится). 2. Компилируется в байт-код. 3. Исполняется виртуальной машиной Python (PVM)...
Функция exec()
Функция exec() поддерживает динамическое выполнение кода Python и принимает большие блоки кода, в отличие от eval(). Передаваемый функции код должен быть либо строкой, либо объектом кода, например сгенерированный функцией compile(). Если это строка, строка анализируется как набор операторов Python, который затем выполняется (если не возникает синтаксическая ошибка). Если это объект кода, он просто выполняется. Во всех случаях ожидается, что исполняемый код будет действительным, как ввод файла. Во всех случаях, если globals и locals опущены, код выполняется в текущей области видимости...