Question

Je ne comprends pas vraiment le concept de "l'interpréteur de bytecode". dans le contexte de CPython. Quelqu'un peut-il éclairer un peu la situation?

Cela signifie-t-il que CPython va compiler et exécuter un fichier pyc (fichier bytecode?). Alors qu'est-ce que compiler un fichier py en fichier pyc? Et en quoi Jython est différent de CPython (sauf qu’ils sont implémentés dans différents langages).

J'ai aussi lu quelque part que Python est une interprétation C ++. Est-ce correct? Et qu'est-ce que cela signifie?

Je suis encore très nouveau sur Python, alors pardonnez-moi si je pose des questions idiotes ... Merci beaucoup!

Était-ce utile?

La solution

CPython est l’implémentation de Python en C. Il s’agit de la première implémentation, et demeure la principale implication des gens lorsqu'ils parlent de Python. Il compile les fichiers .py en fichiers .pyc. Les fichiers .pyc contiennent des bytecodes. L'implémentation CPython interprète également ces bytecodes. CPython n’est pas écrit en C ++, c’est C.

La compilation de .py à .pyc se fait de manière transparente selon les besoins. Lorsque vous exécutez un fichier .py, il sera d'abord compilé en un fichier .pyc si nécessaire, puis le fichier .pyc sera interprété.

Jython est différent car (en plus d'être implémenté en Java au lieu de C), il compile les fichiers .py en fichiers .class afin qu'ils puissent être exécutés dans la JVM.

Autres conseils

Premièrement: le fait que CPython soit un interpréteur de bytecode ne devrait pas avoir d’importance pour vous en tant qu’utilisateur de python. Allez-y, écrivez du code et ne vous inquiétez pas de la façon dont il est transformé en action.

Donc, pour répondre à votre question et satisfaire votre curiosité, voici ce qui se passe: CPython lit le code source Python et le compile en code octet Python, qui est stocké dans le fichier .pyc. Il exécute ensuite ce code à l'aide d'un interpréteur de bytecode. Cette conception sépare l'analyse de python de l'exécution, permettant aux deux parties de l'interpréteur d'être plus simples.

Jython n’est que la moitié avant: il lit les sources Python et génère des bytecodes Java, qui sont ensuite interprétés par la machine virtuelle Java. Il s’agit de la même architecture que CPython, avec deux différences notables: La première: le bytecode java est normalisé et documenté, alors que le bytecode CPython est considéré comme interne à python et peut changer à tout moment. Deux: la machine virtuelle Java est beaucoup plus compliquée que l’interprète CPython. La machine virtuelle Java est l’un des moteurs JIT les plus avancés au monde, tandis que l’interpréteur CPython est assez simple.

CPython est à la fois le compilateur de bytecode et l’interprète (machine virtuelle).

Il détecte automatiquement si aucun fichier de pré-compilateur existant (.pyc) n'existe, compile le code et l'enregistre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top