Sim, é uma linguagem compilada e interpretada. Então, por que geralmente a chamamos de linguagem interpretada?
vê como é compilado e interpretado?
Antes de tudo, quero dizer que você gostará mais da minha resposta se você é do mundo Java.
No Java, o código-fonte é convertido primeiro no código de bytes através do compilador javac e depois direcionado à JVM (responsável por gerar o código nativo para fins de execução). Agora, quero mostrar a você que chamamos o Java de linguagem compilada, porque podemos ver que ele realmente compila o código-fonte e fornece o arquivo .class (nada além do bytecode) através de:
javac Hello.java -------> produz o arquivo Hello.class
java Hello --------> Direcionando bytecode para JVM para fins de execução
O mesmo acontece com o python, ou seja, primeiro o código-fonte é convertido no bytecode através do compilador e depois direcionado ao PVM (responsável por gerar o código nativo para fins de execução). Agora, quero mostrar a você que normalmente chamamos o Python como uma linguagem interpretada porque a compilação acontece nos bastidores
e quando executamos o código python através de:
python Hello.py -------> extrai diretamente o código e podemos ver a saída desde que o código esteja sintaticamente correto
@ python Hello.py parece que ele é executado diretamente, mas na verdade ele primeiro gera o bytecode que é interpretado pelo intérprete para produzir o código nativo para fins de execução.
CPython - assume a responsabilidade de compilação e interpretação.
Observe as linhas abaixo se precisar de mais detalhes :
Como mencionei que o CPython compila o código-fonte, mas a compilação real acontece com a ajuda do cython , a interpretação acontece com a ajuda do CPython
Agora vamos falar um pouco sobre o papel do compilador Just-In-Time em Java e Python
Na JVM, existe o Java Interpreter que interpreta o bytecode linha por linha para obter o código da máquina nativo para fins de execução, mas quando o bytecode Java é executado por um intérprete, a execução sempre será mais lenta. Então qual é a solução? a solução é o compilador Just-In-Time, que produz o código nativo que pode ser executado muito mais rapidamente do que poderia ser interpretado. Alguns fornecedores de JVM usam o Java Interpreter e outros usam o compilador Just-In-Time . Referência: clique aqui
No python, para contornar o intérprete e obter uma execução rápida, use outra implementação python ( PyPy ) em vez do CPython .
clique aqui para outra implementação de python, incluindo PyPy .