Pergunta

Eu realmente não recebo o conceito de "intérprete de bytecode" no contexto do Cpython. Alguém pode lançar alguma luz sobre toda a imagem?

Isso significa que o cpython compilará e executará o arquivo pyc (arquivo bytecode?). Então qual arquivo py compilar no arquivo pyc? E como o Jython é diferente de Cpython (exceto que eles são implementados em diferentes idiomas).

Eu também li em algum lugar que o Python é a interpretação do C ++. Isso está correto? E o que isso significa?

Ainda sou muito novo no Python, então me perdoe se eu fizer as perguntas idiotas ... muito obrigado!

Foi útil?

Solução

Cpython é a implementação do Python em C. É a primeira implementação, e ainda é a principal que as pessoas significam quando falam sobre Python. Ele compila arquivos .py para arquivos .pyc. Os arquivos .pyc contêm bytecodes. A implementação do CPython também interpreta esses bytecodes. Cpython não está escrito em C ++, é C.

A compilação de .py para .pyc acontece transparentemente, conforme necessário. Quando você executa um arquivo .py, ele será compilado primeiro a um arquivo .pyc, se necessário, o arquivo .pyc será interpretado.

O Jython é diferente porque (além de ser implementado em Java em vez de c) Ele compila arquivos .py em arquivos .class para que possam ser executados na JVM.

Outras dicas

Primeiro: o fato de o CPython ser um intérprete de bytecode não deve importar para você como usuário do Python. Vá em frente e escreva código e não se preocupe com a forma como se transformou em ação.

Portanto, para responder à sua pergunta e satisfazer sua curiosidade, eis o que acontece: o Cpython lê o código -fonte do Python e a compila no código Python Byte, que é armazenado no arquivo .pyc. Em seguida, ele executa esse código usando um intérprete de bytecode. Esse design separa a análise do Python da execução, permitindo que as duas partes do intérprete sejam mais simples.

O Jython é apenas a metade da frente - ele lê a fonte do Python e produz produtos de bytes Java, que são então interpretados pela JVM. É a mesma arquitetura que o Cpython, com duas diferenças notáveis: uma: o bytecode java é padronizado e documentado, enquanto o cpython bytecode é considerado interno ao Python e pode mudar a qualquer momento. Dois: A JVM é muito mais complicada que o intérprete Cpython. A JVM possui um dos motores JIT mais avançados do mundo, enquanto o intérprete Cpython é bastante simples.

O CPYTHON é o compilador de bytecode e o intérprete (máquina virtual).

Ele detecta automaticamente se não houver arquivo pré-compilador existente (.pyc), compila o código e salvá-lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top