Pregunta

Realmente no entiendo el concepto de "intérprete de código de bytes" en el contexto de CPython. ¿Alguien puede arrojar algo de luz sobre toda la imagen?

¿Significa que CPython compilará y ejecutará el archivo pyc (archivo bytecode?). Entonces, ¿qué compilar archivo py a archivo pyc? Y en qué se diferencia Jython de CPython (excepto que se implementan en diferentes idiomas).

También leí en alguna parte que Python es interpretación de C ++. ¿Es esto correcto? ¿Y qué significa eso?

Todavía soy muy nuevo en Python, así que perdóname si hago las preguntas tontas ... ¡Muchas gracias!

¿Fue útil?

Solución

CPython es la implementación de Python en C. Es la primera implementación, y sigue siendo la principal a la que se refieren las personas cuando hablan de Python. Compila archivos .py en archivos .pyc. Los archivos .pyc contienen códigos de bytes. La implementación de CPython también interpreta esos bytecodes. CPython no está escrito en C ++, es C.

La compilación de .py a .pyc se realiza de forma transparente según sea necesario. Cuando ejecuta un archivo .py, primero se compilará en un archivo .pyc si es necesario, luego se interpretará el archivo .pyc.

Jython es diferente porque (además de implementarse en Java en lugar de C) compila archivos .py en archivos .class para que puedan ejecutarse en la JVM.

Otros consejos

Primero: El hecho de que CPython sea un intérprete de código de bytes no debería importarle como usuario de python. Siga adelante y escriba el código, y no se preocupe por cómo se convirtió en acción.

Entonces, para responder a su pregunta y satisfacer su curiosidad, esto es lo que sucede: CPython lee el código fuente de Python y lo compila en el código de bytes de Python, que se almacena en el archivo .pyc. Luego ejecuta ese código usando un intérprete de bytecode. Este diseño separa el análisis de Python de la ejecución, permitiendo que ambas partes del intérprete sean más simples.

Jython es solo la mitad frontal: lee la fuente de Python y genera códigos de bytes Java, que luego son interpretados por la JVM. Es la misma arquitectura que CPython, con dos diferencias notables: una: el código de bytes de Java está estandarizado y documentado, mientras que el código de bytes de CPython se considera interno a Python y puede cambiar en cualquier momento. Dos: la JVM es mucho más complicada que el intérprete de CPython. El JVM tiene uno de los motores JIT más avanzados del mundo, mientras que el intérprete CPython es bastante simple.

CPython es tanto el compilador de código de bytes como el intérprete (máquina virtual).

Detecta automáticamente si no existe un archivo precompilador existente (.pyc), compila el código y lo guarda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top