Quel est tout ce tapage sur Python et CPython (Jython, IronPython) , je ne comprends pas:
python.org mentionne que CPython est:
L'implémentation "traditionnelle" de Python (surnommée CPython)
encore une autre question Stack Overflow mentionne que:
CPython est l'interpréteur de code octet par défaut de Python, qui est écrit en C.
Honnêtement, je ne comprends pas ce que ces deux explications signifient pratiquement, mais ce que je pensais, c'est que si j'utilise CPython, cela signifie que lorsque j'exécute un exemple de code python, il le compile en langage C, puis l'exécute comme s'il s'agissait de C code
Alors, qu'est-ce que CPython exactement et comment diffère-t-il par rapport à Python et devrais-je probablement utiliser CPython sur Python et si oui, quels sont ses avantages?
Réponses:
Alors, qu'est-ce que CPython?
CPython est l' implémentation Python d' origine . Il s'agit de l'implémentation que vous téléchargez sur Python.org. Les gens l'appellent CPython pour le distinguer des autres implémentations Python ultérieures et pour distinguer l'implémentation du moteur de langage du langage de programmation Python lui-même.
La dernière partie est d'où vient votre confusion; vous devez garder Python-the-language séparé de tout ce qui exécute le code Python.
CPython se trouve être implémenté en C. C'est juste un détail d'implémentation, vraiment. CPython compile votre code Python en bytecode (de manière transparente) et interprète ce bytecode dans une boucle d'évaluation.
CPython est également le premier à implémenter de nouvelles fonctionnalités; Le développement du langage Python utilise CPython comme base; d'autres implémentations suivent.
Qu'en est-il de Jython, etc.?
Jython , IronPython et PyPy sont les "autres" implémentations actuelles du langage de programmation Python; ceux-ci sont implémentés en Java, C # et RPython (un sous-ensemble de Python), respectivement. Jython compile votre code Python en bytecode Java , afin que votre code Python puisse s'exécuter sur la JVM. IronPython vous permet d'exécuter Python sur le Microsoft CLR . Et PyPy, mis en œuvre dans (un sous-ensemble de) Python, vous permet d'exécuter du code Python plus rapidement que CPython, ce qui devrait à juste titre vous épater. :-)
Compilation actuelle en C
Donc CPython ne traduit pas votre code Python en C par lui-même. Au lieu de cela, il exécute une boucle d'interpréteur. Il est un projet qui fait traduire le code Python-ish à C, et que l' on appelle Cython . Cython ajoute quelques extensions au langage Python et vous permet de compiler votre code en extensions C, code qui se connecte à l'interpréteur CPython.
la source
Vous devez faire la distinction entre une langue et une implémentation. Python est un langage,
Selon Wikipedia , "Un langage de programmation est une notation pour écrire des programmes, qui sont des spécifications d'un calcul ou d'un algorithme". Cela signifie que ce sont simplement les règles et la syntaxe pour écrire du code. Séparément, nous avons une implémentation de langage de programmation qui, dans la plupart des cas, est l'interpréteur ou le compilateur réel.
Python est un langage. CPython est l'implémentation de Python en C. Jython est l'implémentation en Java, etc.
Pour résumer: vous utilisez déjà CPython (si vous avez téléchargé ici ).
la source
Même moi, j'ai eu le même problème à comprendre en quoi CPython, JPython, IronPython, PyPy sont différents les uns des autres.
Donc, je suis prêt à effacer trois choses avant de commencer à expliquer:
Si vous souhaitez consulter le bytecode de CPython, vous pouvez le faire. Voici comment vous pouvez:
Voyons maintenant le code ci-dessus. Les lignes 1 à 6 sont une définition de fonction. À la ligne 8, nous importons le module 'dis' qui peut être utilisé pour afficher le bytecode Python intermédiaire (ou vous pouvez dire, le désassembleur pour le bytecode Python) généré par CPython (interprète).
REMARQUE : j'ai obtenu le lien vers ce code à partir du canal IRC #python: https://gist.github.com/nedbat/e89fa710db0edfb9057dc8d18d979f9c
Et puis, il y a Jython, qui est écrit en Java et finit par produire du code d'octet Java. Le code d'octet Java s'exécute sur Java Runtime Environment, qui est une implémentation de Java Virtual Machine (JVM). Si cela prête à confusion, je soupçonne que vous n'avez aucune idée du fonctionnement de Java. En termes simples, le code Java (le langage, pas le compilateur) est pris par le compilateur Java et génère un fichier (qui est du code d'octet Java) qui peut être exécuté uniquement à l'aide d'un JRE. Ceci est fait de sorte qu'une fois le code Java compilé, il puisse être porté sur d'autres machines au format de code octet Java, qui ne peut être exécuté que par JRE. Si cela prête toujours à confusion, vous voudrez peut-être consulter cette page Web .
Ici, vous pouvez demander si le bytecode de CPython est portable comme Jython, je ne le pense pas. Le bytecode produit dans l'implémentation de CPython était spécifique à cet interpréteur pour le rendre facile pour une exécution ultérieure du code (je soupçonne également que, une telle production de bytecode intermédiaire, juste pour la facilité du traitement se fait dans de nombreux autres interprètes).
Ainsi, en Jython, lorsque vous compilez votre code Python, vous vous retrouvez avec du code d'octet Java, qui peut être exécuté sur une machine virtuelle Java.
De même, IronPython (écrit en langage C #) compile votre code Python en Common Language Runtime (CLR), qui est une technologie similaire à celle de JVM, développée par Microsoft.
la source
Cet article explique en détail la différence entre les différentes implémentations de Python. Comme le dit l'article:
la source
Python est un langage: un ensemble de règles qui peuvent être utilisées pour écrire des programmes. Il existe plusieurs implémentations de ce langage.
Quelle que soit l'implémentation que vous prenez, ils font à peu près la même chose: prenez le texte de votre programme et interprétez-le, exécutant ses instructions. Aucun d'eux ne compile votre code en C ou dans un autre langage.
CPython est l'implémentation d'origine, écrite en C. (La partie "C" de "CPython" fait référence au langage qui a été utilisé pour écrire l'interpréteur Python lui-même.)
Jython est le même langage (Python), mais implémenté à l'aide de Java.
L'interprète IronPython a été écrit en C #.
Il y a aussi PyPy - un interpréteur Python écrit en Python. Faites votre choix :)
la source
implementation
signifie quel langage a été utilisé pour implémenter Python et non comment le code python serait implémenté. L'avantage d'utiliser CPython est la disponibilité de C Run-time ainsi qu'une intégration facile avec C / C ++.Donc, CPython a été initialement implémenté à l'aide de
C
. Il y avait d'autres fourches dans l'implémentation d'origine qui permettaient à Python de lever Java (JYthon) ou .NET Runtime (IronPython).En fonction de l'implémentation que vous utilisez, la disponibilité de la bibliothèque peut varier, par exemple Ctypes n'est pas disponible dans Jython , donc toute bibliothèque qui utilise ctypes ne fonctionnerait pas dans Jython. De même, si vous souhaitez utiliser une classe Java, vous ne pouvez pas le faire directement depuis CPython. Vous avez besoin soit d'une colle (JEPP), soit de Jython (The Java Implementation of Python)
la source
Vous devez savoir que CPython ne prend pas vraiment en charge le multithreading en raison du verrouillage de l'interpréteur global . Il n'a également aucun mécanisme d'optimisation pour la récursivité et a de nombreuses autres limitations que d'autres implémentations et bibliothèques essaient de combler.
Vous devriez jeter un œil à cette page sur le wiki python.
Regardez les extraits de code sur cette page, cela vous donnera une bonne idée de ce qu'est un interprète.
la source
L'implémentation originale et standard de Python est généralement appelée
CPython
lorsque vous souhaitez la comparer avec les autres options ( et simplement «Python» dans le cas contraire ). Ce nom vient du fait qu'il est codé en portableANSI C language code
. Il s'agit du Python que vous récupérez sur http://www.python.org , que vous obtenez avec les distributions ActivePython et Enthought , et que vous avez automatiquement sur la plupart des machines Linux et Mac OS X. Si vous avez trouvé une version préinstallée de Python sur votre machine, c'est probablementCPython
, sauf si votre entreprise ou organisation utilise Python de manière plus spécialisée.la source
Une implémentation de langage de programmation est un système pour exécuter des programmes informatiques.
Il existe deux approches générales pour l'implémentation d'un langage de programmation:
Python est un langage de programmation de haut niveau interprété créé par Guido van Rossum en 1991.
CPython est une version de référence du langage informatique Python, qui est également écrit en C créé par Guido van Rossum .
Autre liste d'implémentations Python
La source
la source