¿Qué es todo este alboroto sobre Python y CPython (Jython, IronPython) ? No lo entiendo:
python.org menciona que CPython es:
La implementación "tradicional" de Python (apodado CPython)
otra pregunta de desbordamiento de pila menciona que:
CPython es el intérprete de código de bytes predeterminado de Python, que está escrito en C.
Honestamente, no entiendo qué significan prácticamente ambas explicaciones, pero lo que pensé fue que, si uso CPython, eso significa que cuando ejecuto un código python de muestra, lo compila en lenguaje C y luego lo ejecuta como si fuera C código
Entonces, ¿qué es exactamente CPython y cómo difiere en comparación con python? ¿Debería usar CPython sobre Python y, de ser así, cuáles son sus ventajas?
Respuestas:
Entonces, ¿qué es CPython?
CPython es la implementación original de Python. Es la implementación que descargas de Python.org. La gente lo llama CPython para distinguirlo de otras implementaciones posteriores de Python, y para distinguir la implementación del motor del lenguaje del lenguaje de programación Python .
La última parte es de donde viene tu confusión; necesita mantener Python-the-language separado de lo que sea que ejecute el código Python.
CPython pasa a ser implementado en C. Esto es sólo un detalle de implementación, la verdad. CPython compila su código Python en bytecode (de forma transparente) e interpreta ese bytecode en un bucle de evaluación.
CPython también es el primero en implementar nuevas características; El desarrollo de Python-the-language usa CPython como base; otras implementaciones siguen.
¿Qué hay de Jython, etc.?
Jython , IronPython y PyPy son las "otras" implementaciones actuales del lenguaje de programación Python; Estos se implementan en Java, C # y RPython (un subconjunto de Python), respectivamente. Jython compila su código Python en código de bytes Java , por lo que su código Python puede ejecutarse en la JVM. IronPython le permite ejecutar Python en Microsoft CLR . Y PyPy, que se implementa en (un subconjunto de) Python, le permite ejecutar código Python más rápido que CPython, lo que con razón debería sorprenderle. :-)
En realidad compilando a C
Entonces CPython no traduce su código Python a C por sí mismo. En cambio, ejecuta un bucle de intérprete. No es un proyecto que hace traducir el código Python-ish a C, y que se llama Cython . Cython agrega algunas extensiones al lenguaje Python y le permite compilar su código en extensiones C, código que se conecta al intérprete de CPython.
fuente
Debe distinguir entre un idioma y una implementación. Python es un lenguaje
Según Wikipedia , "Un lenguaje de programación es una notación para escribir programas, que son especificaciones de un cálculo o algoritmo". Esto significa que son simplemente las reglas y la sintaxis para escribir código. Por separado, tenemos una implementación de lenguaje de programación que, en la mayoría de los casos, es el intérprete o compilador real.
Python es un lenguaje. CPython es la implementación de Python en C. Jython es la implementación en Java, y así sucesivamente.
En resumen: ya está utilizando CPython (si lo descargó desde aquí ).
fuente
Incluso tuve el mismo problema al entender cómo CPython, JPython, IronPython, PyPy son diferentes entre sí.
Entonces, estoy dispuesto a aclarar tres cosas antes de comenzar a explicar:
Si desea ver el código de bytes de CPython, puede hacerlo. Así es como puedes:
Ahora, echemos un vistazo al código anterior. Las líneas 1 a 6 son una definición de función. En la línea 8, importamos el módulo 'dis' que se puede usar para ver el bytecode intermedio de Python (o se puede decir, desensamblador para el bytecode de Python) generado por CPython (intérprete).
NOTA : Obtuve el enlace a este código del canal #python IRC: https://gist.github.com/nedbat/e89fa710db0edfb9057dc8d18d979f9c
Y luego, está Jython, que está escrito en Java y termina produciendo código de bytes Java. El código de bytes de Java se ejecuta en Java Runtime Environment, que es una implementación de Java Virtual Machine (JVM). Si esto es confuso, sospecho que no tienes idea de cómo funciona Java. En términos simples, el compilador de Java toma el código Java (el lenguaje, no el compilador) y genera un archivo (que es el código de bytes de Java) que solo se puede ejecutar utilizando un JRE. Esto se hace para que, una vez que se compila el código Java, se pueda portar a otras máquinas en formato de código de bytes Java, que solo puede ejecutar JRE. Si esto sigue siendo confuso, es posible que desee echar un vistazo a esta página web .
Aquí, puede preguntar si el código de bytes de CPython es portátil como Jython, sospecho que no. El bytecode producido en la implementación de CPython era específico de ese intérprete para facilitar la ejecución posterior del código (también sospecho que, tal producción de bytecode intermedio, solo por la facilidad de procesamiento en muchos otros intérpretes).
Entonces, en Jython, cuando compila su código Python, termina con un código de bytes Java, que puede ejecutarse en una JVM.
Del mismo modo, IronPython (escrito en lenguaje C #) compila su código Python en Common Language Runtime (CLR), que es una tecnología similar en comparación con JVM, desarrollada por Microsoft.
fuente
Este artículo explica a fondo la diferencia entre diferentes implementaciones de Python. Como dice el artículo:
fuente
Python es un lenguaje: un conjunto de reglas que se pueden usar para escribir programas. Hay varias implementaciones de este lenguaje.
Independientemente de la implementación que realice, hacen casi lo mismo: toman el texto de su programa e lo interpretan, ejecutando sus instrucciones. Ninguno de ellos compila su código en C ni en ningún otro lenguaje.
CPython es la implementación original, escrita en C. (La parte "C" en "CPython" se refiere al lenguaje que se usó para escribir el propio intérprete de Python).
Jython es el mismo lenguaje (Python), pero implementado usando Java.
El intérprete IronPython fue escrito en C #.
También hay PyPy, un intérprete de Python escrito en Python. Haz tu elección :)
fuente
implementation
significa qué lenguaje se usó para implementar Python y no cómo se implementaría Python Code. La ventaja de usar CPython es la disponibilidad de C Run-time, así como la fácil integración con C / C ++.Entonces CPython se implementó originalmente usando
C
. Hubo otros forks para la implementación original que permitieron a Python utilizar Java (JYthon) o .NET Runtime (IronPython).Según la implementación que utilice, la disponibilidad de la biblioteca puede variar, por ejemplo, Ctypes no está disponible en Jython , por lo que cualquier biblioteca que use ctypes no funcionaría en Jython. Del mismo modo, si desea utilizar una clase Java, no puede hacerlo directamente desde CPython. Necesitas un pegamento (JEPP) o necesitas usar Jython (La implementación de Java de Python)
fuente
Debe saber que CPython realmente no admite subprocesos múltiples debido al bloqueo global del intérprete . Tampoco tiene mecanismos de optimización para la recursión, y tiene muchas otras limitaciones que otras implementaciones y bibliotecas intentan llenar.
Deberías echar un vistazo a esta página en el wiki de Python.
Mire los fragmentos de código en esta página, le dará una buena idea de lo que es un intérprete.
fuente
La implementación original y estándar de Python generalmente se llama
CPython
cuando desea contrastarla con las otras opciones ( y simplemente "Python" de lo contrario ). Este nombre proviene del hecho de que está codificado en portátilANSI C language code
. Este es el Python que obtiene de http://www.python.org , obtiene con las distribuciones ActivePython y Enthought , y tiene automáticamente en la mayoría de las máquinas Linux y Mac OS X. Si ha encontrado una versión preinstalada de Python en su máquina, probablementeCPython
sea, a menos que su empresa u organización esté usando Python de formas más especializadas.fuente
Una implementación de lenguaje de programación es un sistema para ejecutar programas de computadora.
Existen dos enfoques generales para la implementación del lenguaje de programación:
Python es un lenguaje de programación de alto nivel interpretado creado por Guido van Rossum en 1991.
CPython es la versión de referencia del lenguaje informático Python, que está escrito en C creado por Guido van Rossum también.
Otra lista de implementaciones de Python
Fuente
fuente