Да, это как скомпилированный, так и интерпретируемый язык. Тогда почему мы обычно называем его интерпретируемым как томный?
посмотрим, как этоскомпилировано и интерпретировано?
Прежде всего я хочу сказать, что вам больше понравится мой ответ, если вы из мира Java.
В Javaисходный код сначала преобразуется в байт-код с помощью компилятора javac , а затем направляется в JVM (отвечающий за генерацию собственного кода для целей выполнения).Теперь я хочу показать вам, что мы называем Java скомпилированным языком, потому что мы видим, что он действительно компилирует исходный код и передает файл .class (только байт-код) через:
javac Hello.java -------> производит Hello.class file
java Hello --------> Направление байт-кода на JVM для целей выполнения
То же самое происходит с python, т.е. сначала исходный код преобразуется в байт-код через компилятор, а затем направляется на PVM (отвечает за генерацию нативного кода для целей исполнения).Теперь я хочу показать вам, что мы обычно называем Python интерпретируемым языком, потому что компиляция происходит за сценой и когда мы запускаем код Python через:
python Hello.py -------> непосредственно выполняет код, и мы можем видеть вывод при условии, что код синтаксически правильный
@ python Hello.py похоже, что он выполняется напрямую, но на самом деле он сначала генерирует байт-код, который интерпретируется интерпретатором для создания собственного кода для целей выполнения.
CPython - берет на себя ответственность за обе компиляциии интерпретация.
Посмотрите на строки ниже, если вам нужно больше деталей :
Как я уже говорил, CPython компилирует исходный код, но фактическую компиляциюпроисходит с помощью cython , затем интерпретация происходит с помощью CPython
Теперь давайте немного поговорим о ролиКомпилятор Just-In-Time в Java и Python
В JVM существует интерпретатор Java, который строка за строкой интерпретирует байт-код, чтобы получить собственный машинный код для целей выполнения, но когда байт-код Java выполняется интерпретаторомвыполнение всегда будет медленнее.Так в чем же решение?Решением является Компилятор Just-In-Time , который создает собственный код, который может быть выполнен гораздо быстрее, чем это может быть интерпретировано.Некоторые поставщики JVM используют Java Interpreter , а некоторые используют Компилятор Just-In-Time .Ссылка: нажмите здесь
В Python, чтобы обойти интерпретатора для достижения быстрого выполнения, используйте другую реализацию Python ( PyPy ) вместо CPython , нажмите здесь , чтобы увидеть другую реализацию Python, включая PyPy .