85 votos

Python vs Cpython

¿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 (apodada CPython)

otra pregunta de stackoverflow menciona que:

CPython es el intérprete de código de bytes por defecto de Python, que está escrito en C.

Sinceramente no entiendo lo que significan prácticamente ambas explicaciones pero lo que yo pensaba era eso, si utilizo Cpython significa que cuando ejecuto un ejemplo de código Python, lo compila a lenguaje C y luego lo ejecuta como si fuera código C

Entonces, ¿qué es exactamente Cpython y en qué se diferencia de Python? ¿Debería usar Cpython en lugar de Python y, si es así, cuáles son sus ventajas?

162voto

Martijn Pieters Puntos 271458

¿Qué es CPython?

CPython es el original Implementación de Python. Es la implementación que se descarga de Python.org. La gente la llama CPython para distinguirla de otras implementaciones posteriores de Python, y para distinguir la implementación del motor del lenguaje de Python lenguaje de programación sí mismo.

Esta última parte es la que provoca tu confusión; tienes que mantener Python, el lenguaje, separado de cualquier corre el código Python.

CPython sucede para ser implementado en C. Eso es sólo un detalle de implementación en realidad. CPython compila su código Python en bytecode (de forma transparente) e interpreta ese bytecode en un bucle de evaluación.

CPython es también el primero en implementar nuevas características; el desarrollo del lenguaje Python utiliza CPython como base, otras implementaciones le siguen.

¿Qué pasa con Jython, etc.?

Jython, IronPython y PyPy son las "otras" implementaciones actuales del lenguaje de programación Python; están implementadas en Java, C# y RPython (un subconjunto de Python), respectivamente. Jython compila tu código Python en Java bytecode, para que tu código Python pueda ejecutarse en la JVM. IronPython te permite ejecutar Python en el CLR de Microsoft. Y PyPy, al estar implementado en (un subconjunto de) Python, te permite ejecutar código Python más rápido que CPython, lo que justamente debería dejarte boquiabierto. :-)

Compilación real en C

Así que CPython hace no traducir su código Python a C por sí mismo. En su lugar, ejecuta un bucle de interpretación. Allí es un proyecto que hace traducir el código de Python a C, y eso se llama Cython . Cython añade algunas extensiones al lenguaje Python, y le permite compilar su código en extensiones C, código que se conecta en el intérprete de CPython.

16voto

jamylak Puntos 38094

Hay que distinguir entre un lenguaje y una aplicació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 un implementación del 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.

Resumiendo: Ya estás usando CPython (si lo has descargado de aquí )

15voto

shaktimaan Puntos 6001

Este artículo explica a fondo la diferencia entre las distintas implementaciones de Python. Como dice el artículo:

Lo primero que hay que tener en cuenta es que 'Python' es una interfaz. Hay una especificación de lo que Python debe hacer y cómo debe comportarse (como con cualquier interfaz). Y hay múltiples implementaciones (como con cualquier interfaz).

La segunda cosa que hay que tener en cuenta es que "interpretado" y "compilado" son propiedades de una implementación, no de una interfaz.

5voto

orlenko Puntos 563

Python es un lenguaje: un conjunto de reglas que pueden utilizarse para escribir programas. Hay varias implementaciones de este lenguaje.

Independientemente de la implementación que adopte, hacen prácticamente lo mismo: tomar el texto de su programa e interpretarlo, ejecutando sus instrucciones. Ninguno de ellos compila tu código en C o en cualquier otro lenguaje.

CPython es la implementación original, escrita en C. (La parte "C" en "CPython" se refiere al lenguaje que se utilizó para escribir el propio intérprete de Python).

Jython es el mismo lenguaje (Python), pero implementado con Java.

El intérprete de IronPython fue escrito en C#.

También está PyPy - un intérprete de Python escrito en Python. Haz tu elección :)

5voto

Abhijit Puntos 24122

implementation significa qué lenguaje se utilizó para implementar Python y no cómo se implementaría el código Python. La ventaja de usar CPython es la disponibilidad de C Run-time así como la fácil integración con C/C++.

Así que CPython se implementó originalmente usando C . Hubo otras bifurcaciones de la implementación original que permitieron a Python hacer palanca en Java (JYthon) o en .NET Runtime (IronPython).

En función de la aplicación que utilice, la disponibilidad de la biblioteca puede variar, por ejemplo Ctypes no está disponible en Jython por lo que cualquier biblioteca que utilice ctypes no funcionará en Jython. Del mismo modo, si quieres usar una clase Java, no puedes hacerlo directamente desde CPython. Necesitas un pegamento (JEPP) o necesitas usar Jython (La Implementación Java de Python)

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X