Ответ
Python принято называть интерпретируемым языком, но его выполнение включает этап компиляции. Это гибридная модель.
Процесс выполнения:
- Исходный код (
.py) компилируется в байт-код (файлы.pyc). - Байт-код выполняется виртуальной машиной Python (PVM) построчно.
Пример:
# hello.py
print("Hello, World!")
При запуске python hello.py происходит описанная выше двухэтапная процедура.
Ключевое отличие от чисто компилируемых языков (C, Go) — отсутствие создания отдельного машинного исполняемого файла. Байт-код зависит от PVM.
Ответ 18+ 🔞
Ну вот, опять про эту ебучую компиляцию в Python начинают! Все как попугаи повторяют: "интерпретируемый, интерпретируемый", а на самом деле там целый ёперный театр под капотом.
Смотри, чтобы не быть полным пидарасом шерстяным, надо понимать: Python — это хитрая жопа. Он как бы и интерпретируемый, но при этом нихуя не просто построчно читает.
Как оно на самом деле ебётся:
- Твой исходник (этот самый
hello.py) сначала хуяк — и превращается в байт-код. Это типа как промежуточный язык, понятный только виртуальной машине Питона (PVM). Эти файлы.pyc— они и есть скомпилированный байт-код, чувак! Их можно найти в папке__pycache__, если интересно. - А потом уже эта самая PVM начинает этот байт-код жрать и выполнять. Построчно, да, но не твой исходник, а уже скомпилированную хуйню!
Вот тебе живой пример, чтобы не бздеть:
# hello.py
print("Hello, World!")
Ты пишешь в консоли python hello.py. И что? А вот что: сначала, блядь, компиляция в байт-код (может, даже в оперативке, если файлик .pyc ещё не сохранён), а уж потом — выполнение. Всё! "Hello, World!" на экране.
А в чём, собственно, пиздец и отличие? От чисто компилируемых языков вроде C или Go — в том, что отдельного машинного исполняемого файла (типа .exe) тебе на выходе не дадут, блядь! Твой байт-код — это как инструкция для конкретной виртуальной машины (PVM). Без неё этот файл .pyc — просто набор цифр, манда с ушами. В C же компилятор сразу в машинные коды для процессора переводит — и пошло-поехало, хоть на Луну запускай.
Вот и весь сказ, ебать мои старые костыли. Не такой уж он и простой, этот ваш Python.