Python: интерпретируемый или компилируемый?
Разбираемся, как на самом деле работает Python!
Ответ прост - на самом деле Python и компилируемый, и интерпретируемый язык.
🔹 А теперь рассмотрим как это работает на самом деле
Глобально процесс выполнения программ, написанных на языке Python делится на 2 шага:
1. Компиляция исходного кода в байт-код
Это происходит сразу после запуска программы и результат процесс почти скрыт от пользователя (почему почти - обязательно раскажем в следующих постах). На данном шаге Python переводит исходный код (операторы внутри файла) в байт-код (низкоуровневое и независимое от платформы представление исходного кода).
2. Интерпретация байт-кода
После того как Python получил скомпилированные .pyc файлы, наступает момент интерпретации полученного байт-кода. Тут наступает время PVM (Python Virtual Machine), которая в свою очередь выполняет байт-код. Кстати, для ускорения повторных запусков, байт-код кэшируется. Во время следующего запуска программы Python пропустит шаг компиляции и подгрузит ранее скомпилированный байт-код при условии, что вы не меняли исходный код и версию Python.
🔹 Так почему же принято называть Python интерпретируемым языком программировнаия ?
Все просто - с фундаментальной точки зрения в Python мы имеем лишь исполняющий механизм, отдельная стадия компиляции отсутствует. Все, включая создание функций, классов, констант и даже связки модулей, происходит во время выполнение. В то же время в статических языках указанные события происходят до непосредственного выполнения программы.
Хотите узнать больше про тонкости Python? Пишите в комментариях! 👇