Domanda

Non capisco davvero il concetto di " interprete bytecode " nel contesto di CPython. Qualcuno può far luce su tutta l'immagine?

Significa che CPython compilerà ed eseguirà il file pyc (file bytecode?). Quindi quale compilare file py in file pyc? E in che modo Jython è diverso da CPython (tranne che sono implementati in lingue diverse).

Ho anche letto da qualche parte che Python è un'interpretazione in C ++. È corretto? E cosa significa?

Sono ancora molto nuovo su Python, quindi perdonami se faccio domande stupide ... Grazie mille!

È stato utile?

Soluzione

CPython è l'implementazione di Python in C. È la prima implementazione, e ancora quella principale che la gente intende quando parlano di Python. Compila i file .py in file .pyc. I file .pyc contengono bytecode. L'implementazione di CPython interpreta anche questi bytecode. CPython non è scritto in C ++, è C.

La compilazione da .py a .pyc avviene in modo trasparente secondo necessità. Quando esegui un file .py, verrà prima compilato in un file .pyc se necessario, quindi il file .pyc verrà interpretato.

Jython è diverso perché (oltre ad essere implementato in Java anziché in C) compila i file .py in file .class in modo che possano essere eseguiti nella JVM.

Altri suggerimenti

Primo: il fatto che CPython sia un interprete di bytecode non dovrebbe interessarti come utente di Python. Vai avanti e scrivi il codice e non preoccuparti di come si è trasformato in azione.

Quindi, per rispondere alla tua domanda e soddisfare la tua curiosità, ecco cosa succede: CPython legge il codice sorgente di Python e lo compila in codice byte Python, che è memorizzato nel file .pyc. Quindi esegue quel codice usando un interprete bytecode. Questo design separa l'analisi di Python dall'esecuzione, consentendo a entrambe le parti dell'interprete di essere più semplici.

Jython è solo la metà anteriore: legge l'origine Python e genera i bytecode Java, che vengono quindi interpretati dalla JVM. È la stessa architettura di CPython, con due differenze degne di nota: Una: il bytecode java è standardizzato e documentato, mentre il bytecode CPython è considerato interno a python e può cambiare in qualsiasi momento. Due: la JVM è molto più complicata dell'interprete CPython. JVM ha uno dei motori JIT più avanzati al mondo, mentre l'interprete CPython è piuttosto semplice.

CPython è sia il compilatore bytecode che l'interprete (macchina virtuale).

Rileva automaticamente se non esiste alcun file pre-compilatore (.pyc) esistente, compila il codice e lo salva.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top