584 votes

Python vs Cpython

Ce sont toutes ces histoires à propos de Python et Disponible (Jython,IronPython), je ne comprends pas:

python.org mentionne que Disponible est:

Le "traditionnel" de la mise en œuvre de Python (surnommé Disponible)

encore un autre stackoverflow question mentionne que:

Disponible par défaut est le byte-code de l'interpréteur de Python, qui est écrit en C.

Honnêtement, je ne comprends pas ce que ces deux explications pratiquement veux dire, mais ce que j'ai pensé était que, si j'utilise Disponible est-ce à dire lorsque je lance un exemple de code python, il compile en langage C, puis l'exécute comme si c'était du code C

Qu'est-ce exactement qui est Disponible et comment est-il différent en comparaison avec python et je doit utiliser probablement Disponible sur Python et si oui, quels sont ses avantages?

867voto

Martijn Pieters Points 271458

Donc ce qui est Disponible

Disponible est l' origine Python de mise en œuvre. C'est l'application que vous téléchargez à partir Python.org. Les gens l'appellent Disponible pour le distinguer des autres, plus tard, implémentations de Python, et à distinguer la mise en œuvre de la langue à partir du moteur Python langage de programmation lui-même.

La dernière partie est où votre confusion vient de là, vous avez besoin de garder Python-la-langue distincte de ce que s'exécute le code Python.

Disponible arrive à être mis en œuvre en C. C'est juste un détail d'implémentation vraiment. Disponible compile votre code python en bytecode (de manière transparente) et interprète le bytecode dans une boucle d'évaluation.

Disponible est également le premier à mettre en œuvre de nouvelles fonctionnalités, Python-le développement du langage utilise Disponible comme base, d'autres implémentations de suivre.

Qu'en Jython, etc.

Jython, IronPython et PyPy sont les "autres", les implémentations du langage de programmation Python; ceux-ci sont mis en œuvre en Java, C# et RPython (un sous-ensemble de Python), respectivement. Jython compile votre code Python pour Java bytecode, de sorte que votre code Python peut s'exécuter sur la JVM. IronPython vous permet d'exécuter Python sur le Microsoft common language runtime. Et PyPy, dans (une sous-ensemble de) Python, permet d'exécuter du code Python plus vite que Disponible, qui, à juste titre devrait souffler votre esprit. :-)

En fait la compilation de C

Donc Disponible ne pas traduire votre code Python à C par lui-même. Au lieu de cela, il exécute un interprète en boucle. Il est un projet qui ne traduire Python-ish code C, et qui est appelée Cython. Cython ajoute quelques extensions au langage Python, et vous permet de compiler votre code C extensions, le code qui se branche dans le Disponible interprète.

121voto

jamylak Points 38094

Il faut distinguer entre une langue et une mise en œuvre. Python est un langage,

Selon wikipédia, "Un langage de programmation est une notation pour l'écriture de programmes, qui sont caractéristiques d'un calcul ou d'un algorithme". Cela signifie que c'est tout simplement la syntaxe et les règles pour l'écriture de code. Séparément, nous avons un langage de programmation de mise en œuvre qui, dans la plupart des cas, est l'interpréteur ou compilateur.

Python est un langage. Disponible est la mise en œuvre de Python dans C. Jython est la mise en œuvre en Java, et ainsi de suite.

Pour résumer: Vous utilisez déjà Disponible (Si vous avez téléchargé à partir d' ici)

36voto

shaktimaan Points 6001

Cet article explique en détail la différence entre les différentes implémentations de Python. Comme l'article le dit:

La première chose à réaliser est que ‘Python' est une interface. Il y a un la spécification de ce que Python doit faire et comment il doit se comporter (comme avec n'importe quelle interface). Et il y a plusieurs implémentations (comme avec toute l'interface).

La deuxième chose à réaliser est que les "interpréter" et "compilé" sont propriétés d'une implémentation d'une interface.

30voto

orlenko Points 563

Python est un langage: un ensemble de règles qui peuvent être utilisés pour écrire des programmes. Il y a plusieurs implementaions de cette langue.

N'importe quelle application que vous prenez, ils font à peu près la même chose: prendre le texte de votre programme et de l'interpréter, de l'exécution de ses instructions. Aucun d'entre eux compiler votre code en C ou en toute autre langue.

Disponible est à l'origine de la mise en œuvre, écrite en C. (Le "C" dans le cadre "Disponible" se rapporte à la langue qui a été utilisé pour écrire l'interpréteur Python lui-même.)

Jython est le même langage (Python), mais mis en œuvre à l'aide de Java.

IronPython interprète a été écrit en C#.

Il y a aussi PyPy - un interpréteur Python écrit en Python. Faites votre choix :)

11voto

Abhijit Points 24122

implementation signifie que la langue a été utilisée pour mettre en œuvre Python, et non pas comment le Code python serait mis en œuvre. L'avantage de l'aide Disponible est la disponibilité de C au moment de l'Exécution ainsi que l'intégration facile avec le C/C++.

Donc Disponible a été initialement mis en œuvre à l'aide de C. Il y avait d'autres fourches à l'origine de la mise en œuvre qui a permis à Python de levier de bord de Java (JYthon) ou .NET Runtime (IronPython).

Sur la base de laquelle la mise en Œuvre que vous utilisez, bibliothèque de la disponibilité peut varier, par exemple Ctypes n'est pas disponible en Jython, de sorte que toute bibliothèque qui utilise ctypes ne fonctionnerait pas en Jython. De même, si vous souhaitez utiliser une Classe Java, vous ne pouvez directement le faire à partir de Disponible. Vous avez besoin d'une colle (PCPC) ou le besoin d'utiliser Jython (La Java de la mise en Œuvre de Python)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X