Python - compiled eller interperted

Tags:    diverse

Jeg kan ikke helt finde ud af om python bliver compileret eller interperted, eller lidt af begge dele??

Som i kan høre har jeg ikke rigtig nogen ide om hvordan det fungere, så er der en der kan forklare mig hvordan det virker, helt fra bunden?





5 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Men er det helt samme koncept som java så, altså borstest fra at python programmet både kompilere til byte code og køre programmet, istedet for at det er to forskellige programmer(javac og java).

Men hvad så med interactive mode, kompilere den så en linje/funktion af gangen?

Du siger det er når man loader et modul, men jeg kan se, at der er kommet en ashift.pyc ved siden af ashift.py efter jeg har kørt scriptet....

Du behøver ikke kompilere for at køre et python program men det skal du med java. Tror ikke den kompilere i interactive mode det bliver vist bare sendt "ned gennem" python til processeren.

Den .pyc du får er fordi du har kørt et program som importer et modul, her ashift. Moduler i python er besvarende til en fil. De moduler der bliver importeret bliver compilet. En compilet fil har endelsen .pyc. Man kan også falde over .pyo filer som er compilerede moduler som også er blevet optimerede.

I java skal alt kompileres før det kan køres. I python behøver intet at blive kompileret typisk bliver importerede moduler det, hvilket jeg tror er for at forøge hastigheden.

Om et interactive mode eller ej tager den det en linje ad gangen. Den kompilerer også en linje ad gangen men tror ikke den tjekker efter fejl før det bliver kørt.



Indlæg senest redigeret d. 31.05.2010 21:54 af Bruger #14645
Som hovedregel compiler du ikke Python overhovedet. Det bliver bare fortolket af Python selv når det skal bruges, ligesom med PHP.

Du _kan_ vælge at compile det til bytecode (pyc), men det er mest til store libraries der skal virke på tværs af mange forskellige Python-projekter.

Men lad være at spekulere over det. Python er et interpreted sprog, som hovedregel.



Python er interpreted. Det der kan ske er når du loader moduler er at de moduler du loader bliver kompileret til byte code (.pyc), en mellemting mellem den direkte skrevne kode og maskinkode, lidt i stil med javas .class filer for at gøre det hurtigere. Men python kode bliver ikke kompileret til maskinkode. Man kan hente nogle programmer/scripts der kan lave .exe filer eller lignende til andre os'er. Men de tar typisk den virtuelle maskine og ens kode og pakker ned så .exe filen blot starter den virtuelle maskine med koden.



Indlæg senest redigeret d. 31.05.2010 19:16 af Bruger #14645
Men er det helt samme koncept som java så, altså borstest fra at python programmet både kompilere til byte code og køre programmet, istedet for at det er to forskellige programmer(javac og java).

Men hvad så med interactive mode, kompilere den så en linje/funktion af gangen?

Du siger det er når man loader et modul, men jeg kan se, at der er kommet en ashift.pyc ved siden af ashift.py efter jeg har kørt scriptet....



Som hovedregel compiler du ikke Python overhovedet. Det bliver bare fortolket af Python selv når det skal bruges, ligesom med PHP.

Du _kan_ vælge at compile det til bytecode (pyc), men det er mest til store libraries der skal virke på tværs af mange forskellige Python-projekter.

Men lad være at spekulere over det. Python er et interpreted sprog, som hovedregel.


Ok, :)



t