Pythondı úyreniw: 2-lekciya
2-BAP
Python baǵdarlamalardı qalay orınlaydı
Bul bap hám keyingisi baǵdarlama orınlanıwına tez itibar beredi - kodtı qanday iske túsiresiz hám Python onı qalay ámelge asıradı. Bul bapta biz Python interpretatorın úyrenemiz. 3-bapta bolsa sizge óz baǵdarlamalarıńızdı qalay iske túsiriw hám ámelge asırıw kórsetiledi.
Iske túsiriw detalları tábiyiy túrde platformaǵa baylanıslı, hám bul eki baptaǵı ayırım materiallar siz isleytuǵın platformaǵa qollanılmawı múmkin, sonlıqtan siz óz maqsetińizge tiyisli bolmaǵan bólimlerdi ótkizip jiberiwińizge boladı. Sonday-aq, aldın uqsaǵan qurallardan paydalanǵan hám tildiń negizine tezirek jetiwdi qáleytuǵın tájiriybeli oqıwshılar bul baptıń bir bólegin "keleshekte paydalanıw ushın" saqlaw kerek bolıwı múmkin. Qalǵanlarıńız ushın, qáne, kodtı qalay iske túsiriwdi úyrenemiz.
Python interpretatorın tanıstırıw
Usı waqıtqa shekem, men kóbinese Python haqqında programmalastırıw tili sıpatında sóylep keldim. Biraq, házirgi ámelge asırılıwında, ol sonday-aq interpretator dep atalatuǵın programmalıq támiyinlew bolıp tabıladı. Interpretator - basqa programmalardı orınlaytuǵın programma túri. Siz Python programmasın jazǵanıńızda, Python interpretatorı siziń programmańızdı oqıydı hám ondaǵı kórsetpelerdi orınlaydı. Shınında da, interpretator - siziń kodıńız benen kompyuterińizdiń apparat quralları arasındaǵı programmalıq logika qatlamı bolıp tabıladı.
Python paketi kompyuterińizge ornatılǵanda, ol bir qansha komponentlerdi payda etedi - eń keminde, interpretator hám járdem kitapxanası. Onı qanday qollanıwıńızǵa baylanıslı, Python interpretatorı orınlanatuǵın programma túrinde yamasa basqa programmaǵa baylanısqan kitapxanalar toplamı túrinde bolıwı múmkin. Qaysı Python túrin qollanıwıńızǵa baylanıslı, interpretatordıń ózi C programması, Java klasları toplamı yamasa basqa nárse sıpatında ámelge asırılıwı múmkin. Qanday túrde bolsa da, siziń jazǵan Python kodıńız bárqulla usı interpretator arqalı ámelge asırılıwı kerek. Hám bunı múmkin etiw ushın, siz kompyuterińizge Python interpretatorın ornatıwıńız kerek.
Python ornatıw detalları platformaǵa qarap ózgeredi hám A qosımshada tereńirek qamtıp ótilgen. Qısqasha aytqanda:
• Windows paydalanıwshıları óz-ózin ornatıwshı orınlanatuǵın fayllardı júklep alıp iske túsiredi, bul olardıń kompyuterlerine Pythondı ornatadı. Tek eki ret basıp, barlıq sorawlarǵa "Awa" yamasa "Keyingi" dep juwap beriń.
• Linux hám Mac OS X paydalanıwshılarında ádette olardıń kompyuterlerinde qollanıwǵa jaramlı Python aldın ala ornatılǵan boladı - bul búgingi kúnde bul platformalarda standart komponent bolıp esaplanadı.
• Ayırım Linux hám Mac OS X paydalanıwshıları (hám kópshilik Unix paydalanıwshıları) Pythondı onıń tolıq derek kodı distribuciya paketinen kompilyaciya qıladı.
• Linux paydalanıwshıları sonday-aq RPM faylların taba aladı, al Mac OS X paydalanıwshıları Macke arnalǵan hár qıylı ornatıw paketlerin taba aladı.
• Basqa platformalarda sol platformalarǵa tiyisli ornatıw usılları bar. Mısalı, Python uyalı telefonlarda, oyın pristavkalarında hám iPodlarda da bar, biraq ornatıw usılları júdá hár qıylı boladı.
Pythonnıń ózin http://www.python.org saytınıń júklep alıw betinen alıwǵa boladı. Sonday-aq onı basqa da hár qıylı tarqatıw kanalları arqalı tabıwǵa boladı. Esińizde bolsın, Pythondı ornatıwdan aldın onıń aldınnan bar-joqlıǵın tekseriw kerek. Eger siz Windows-ta jumıs islep atırǵan bolsańız, Pythondı ádette 2-1-súwrette kórsetilgendey "Start" menyusınan tabasız (bul menyu opciyaları keyingi bapta talqılanadı). Unix hám Linux-ta Python kóbinese siziń /usr katalog aǵashıńızda jaylasqan boladı. Ornatıw usılları platformaǵa baylanıslı bolǵanlıqtan, bul jerde qalǵan máselelerdi qısqasha túsindirip ótemiz. Ornatıw procesi haqqında tolıǵıraq maǵlıwmat alıw ushın A qosımshasın qarań. Usı hám keyingi bap ushın men sizde Python jumısqa tayın dep esaplayman.
Programmanı orınlaw
Python skriptin jazıw hám iske túsiriw ne ańlatqanı, siz bul wazıypalardı programist sıpatında kórip shıǵasız ba yamasa Python interpretatorı sıpatında kórip shıǵasız ba, soǵan baylanıslı. Eki kóz-qarasta Python programmalastırıwda áhmiyetli perspektivalar beredi.
Programisttiń kóz-qarası
Eń ápiwayı túrde, Python programması - bul tek Python operatorların óz ishinde saqlaytuǵın tekst faylı. Mısalı, tómendegi script0.py dep atalatuǵın fayl - men oylap taba alatuǵın eń ápiwayı Python skriptleriniń biri, biraq ol tolıq isleytuǵın Python programması bolıp esaplanadı:
print('hello world')
print(2 ** 100)
Bul fayl eki Python print operatorın óz ishine aladı, olar tek qatardı (tırnaqsha ishindegi tekst) hám sanlı ańlatpa nátiyjesin (2 niń 100-dárejesin) shıǵıs aǵımına shıǵaradı.
Házirshe bul kodtıń sintaksisi haqqında qayǵırmań - bul bapta bizdi tek onı iske túsiriw qızıqtıradı. Men print operatorın hám nege siz Pythonda 2 ni 100-dárejege kótere alasız hám bunda asıp ketiwshilik bolmaydı, bulardı kitaptıń keyingi bólimlerinde túsindiremen.
2-1 súwret. Windows ta ornatılǵanda, Python Baslawı túymesiniń menyusında usılay kórinedi. Bul versiyadan versiyaǵa azǵana ózgeriwi múmkin, biraq IDLE rawajlandırıw grafikalıq interfeysin baslaydı, al Python ápiwayı interaktiv sessiya baslaydı. Sonday-aq, bul jerde standart qollanba kitapları hám PyDoc hújjet dvigateli (Modul Hújjetleri) bar.
Siz usınday operatorlar faylın qálegen tekst redaktorı menen dúze alasız. Kóplikke kóre, Python programma fayllarına .py menen tamamlanatuǵın atlar beriledi; texnikalıq jaqtan, bul ataw sxeması tek "import" etiletuǵın fayllar ushın talap etiledi, bul haqqında kitaptıń keyingi bólimlerinde aytıladı, biraq kópshilik Python faylları birdeylik ushın .py atlarına iye.
Usı operatorlardı tekst faylına jazıp bolǵanıńızdan soń, siz Pythonǵa faydı orınlawdı buyırıwıńız kerek - bul ápiwayı túrde fayldaǵı barlıq operatorlardı joqarıdan tómenge qaray, bir-biriniń izinen orınlaw degendi ańlatadı. Keyingi bapta kóriwińiz boyınsha, siz Python programma faylların komanda qatarı arqalı, olardıń belgilerin basıw arqalı, IDE ler ishinde hám basqa da standart usıllar menen iske túsire alasız.
Eger hámmesi jaqsı bolsa, faydı orınlaǵanıńızda, eki print operatorınıń nátiyjelerin kompyuterińizdiń qandayda bir jerinen kóresiz - ádette, programmanı iske túsirgen waqtıńızda turǵan aynada kórinedi:
hello world
1267650600228229401496703205376
Mısalı, mınanı Windows noutbukta DOS komanda qatarınan (ádette Accessories programma menyusında tabılatuǵın Command Prompt aynası dep ataladı) usı skriptti iske túsirgenimde, onıń hesh qanday aqmaq qáteliklerge iye emes ekenin tekseriw ushın ne bolǵanın kórsetedi:
C:\temp> python script0.py
hello world
1267650600228229401496703205376
Biz házir bir qatardı hám bir sandı basıp shıǵaratuǵın Python skriptin iske túsirdik. Bul kod penen programmalastırıw sıylıqların utıp ala almaymız, biraq ol programmanı orınlawdıń tiykarǵı túsiniklerin túsiniw ushın jetkilikli.
Pythonnıń kóz-qarası
Aldıńǵı bólimde berilgen qısqa túsindirme skript tillerine tán hám kópshilik Python baǵdarlamashıları ushın jetkilikli. Siz kodtı tekst fayllarına jazasız hám sol fayllardı interpretator arqalı iske túsiresiz. Biraq, ishki mexanizmde, Pythonǵa "iske túsir" dep buyırǵanıńızda biraz kóbirek nárse júz beredi. Python programmalastırıw ushın onıń ishki isleytuǵın tártibiniń bilimi qatań talap etilmese de, Pythonnıń orınlanıw strukturasın tiykarǵı túsiniw programmanıń orınlanıwınıń úlken kórinisiniń túsiniwge járdem beredi.
Pythonǵa skriptińizdi iske túsiriwdi buyırǵanıńızda, siziń kodıńız haqıyqatında islewdi baslamastan aldın Python bir neshe qádemlerdi orınlaydı. Atap aytqanda, ol dáslep "bayt kod" dep atalatuǵın nársege kompilyaciya etiledi, soń "virtual mashina" dep atalatuǵın nársege jiberiledi.
Bayt kod kompilyaciyası
Ishki tárepte hám sizden derlik tolıq jasırın halda, programmanı orınlaǵanıńızda Python dáslep siziń derek kodıńızdı (faylıńızdaǵı operatorlardı) bayt kod dep atalatuǵın formatqa kompilyaciya etedi. Kompilyaciya - bul tek awdarıw basqıshı, al bayt kod - siziń derek kodıńızdıń tómengi dárejeli, platformaǵa ǵárezsiz kórinisi. Shama menen, Python siziń hár bir derek kodı operatorın olardı jeke qádemlerge bólip, bayt kod kórsetpeleriniń toparına awdaradı. Bul bayt kodqa awdarıw orınlanıwdı tezletiwge arnalǵan - bayt kodtı siziń tekst faylıńızdaǵı dáslepki derek kodı operatorlarına qaraǵanda ádewir tezirek orınlaw múmkin.
Joqarıdaǵı abzacta bul processtiń sizden derlik tolıq jasırın ekenligi aytılǵanın bayqaǵan bolarsız. Eger Python processi siziń kompyuterińizde jazıw huqıqına iye bolsa, ol programmanıń bayt kodın .pyc keńeytpesi bar fayllarǵa saqlap qoyadı (".pyc" kompilyaciya etilgen ".py" deregin ańlatadı). Bul fayllar bir neshe programmalardı iske túsirgenińizden keyin, tiyisli derek kodı faylları menen birge (yaǵnıy, sol papkalarda) kompyuterińizde payda boladı.
Python bayt kodın usılay iske túsiw waqtın optimallastırıw ushın saqlap qoyadı. Kelesi ret programmańızdı iske túsirgenińizde, eger bayt kod sońǵı ret saqlap qoyılǵannan beri derek kodıńızdı ózgertpegen bolsańız, Python .pyc faylların júkleydi hám kompilyaciya basqıshın ótkizip jiberedi. Python qashan qayta kompilyaciya qılıw kerekligin biliw ushın derek kod hám bayt kod fayllarınıń waqıt belgilerin avtomatik túrde tekserip turadı - eger derek kodıńızdı qayta saqlasańız, bayt kod kelesi ret programmańız iske túsirilgende avtomatik túrde qayta jaratıladı.
Eger Python siziń kompyuterińizge bayt kod faylların jaza almasa da, programmańız jumıs isley beredi - bayt kod yadta payda etiledi hám programma juwmaqlanıwdan-aq ápiwayi túrde óshirilip taslanadı.* Biraq, .pyc faylları iske túsiw waqtın tezlestiretuǵını sebepli, úlkenirek programmalar ushın olardıń jazılıwın támiyinlewdi qáleysiz. Bayt kod faylları sonday-aq Python programmaların tarqatıwdıń bir usılı bolıp tabıladı - hatte dáslepki .py derek kodı faylları joq bolsa da, Python tek .pyc faylların taba alsa da programmanı iske túsire aladı. (Tarqatıwdıń basqa usılı ushın 32-bettegi "Muzlatılǵan binarlar" bólimin kóriń.)
Python Virtual Mashinası (PVM)
Programmańız bayt kodǵa kompilyaciya qılınǵannan keyin (yamasa bayt kod bar bolǵan .pyc fayllarınan júklengennen keyin), ol ádette Python Virtual Mashinası (qısqartırıwdı jaqsı kóretugınlar ushın PVM) dep atalatuǵın nársege orınlaw ushın jiberiledi. PVM esitilgenindey áhmiyetli emes; shınında da, ol bólek programma emes hám onı ózin-ózi ornatıwdıń keregi joq. Ámeliyatta, PVM tek siziń bayt kod kórsetpelerińizdi bir-birlep aylanıp ótip, olardıń operaciyaların orınlaw ushın úlken bir cikl bolıp tabıladı. PVM - bul Pythonnıń orınlaw motorı; ol bárhama Python sistemasınıń bir bólegi sıpatında bar hám ol siziń skriptlerińizdi haqıyqattan orınlaytuǵın komponent bolıp tabıladı. Texnikalıq jaqtan, ol "Python interpretatorı" dep atalatuǵın nárseniń sońǵı basqıshı ǵana.
2-2-súwrette usı jerde táriyiplengen orınlaw strukturası kórsetilgen. Esińizde bolsın, bul quramalılıqtıń barlıǵı Python programmistlerinen bilip turıp jasırılǵan. Bayt kodqa kompilyaciya avtomatik túrde ámelge asadı, al PVM bolsa tek siziń kompyuterińizge ornatılǵan Python sistemasınıń bir bólegi. Taǵı da, programmistler (baǵdarlamashılar) ápiwayı túrde kod jazadı hám operatorlar faylların iske túsiredi.
Ónimlilikke tásiri
C hám C++ sıyaqlı tolıq kompilyaciya qılınatugın tiller boyınsha tájiriybesi bar oqıwshılar Python modelinde bir qansha parıqlardı bayqawı múmkin. Birinshiden, Python jumısında ádette qurıw yamasa "make" basqıshı bolmaydı: kod jazılǵannan keyin dárhal iske túsedi. Ekinshiden, Python bayt kodı ekilik mashina kodı emes (mısalı, Intel chipı ushın kórsetpeler). Bayt kod - bul Pythonǵa tán bolǵan arnawlı kórinis.
2-2-súwret. Pythonnıń dástúrli orınlaw modeli: siz jazǵan derek kodı bayt kodına awdarıladı, soń ol Python Virtual Mashinası tárepinen orınlanadı. Sizdiń kodıńız avtomatik túrde kompilyaciya qılınadı, biraq keyin ol interpretaciya qılınadı.
Bul ne ushın ayırım Python kodlarınıń 1-bapta táriyiplengendey C yamasa C++ kodı sıyaqlı tez jumıs islemewiniń sebebi bolıp tabıladı - PVM cikli, CPU chipi emes, ele de bayt kodın interpretaciya qılıwı kerek, al bayt kod kórsetpeleri CPU kórsetpelerine qaraǵanda kóbirek jumıs talap etedi. Ekinshi tárepten, klassikalıq interpretatorlardan parıqlı, ele de ishki kompilyaciya basqıshı bar - Python hár bir derek operatorın qayta-qayta analiz qılıw hám qayta ózgertiwdi talap etpeydi. Juwmaqlap aytqanda, taza Python kodı dástúriy kompilyaciya qılınatuǵın til menen dástúriy interpretaciya qılınatuǵın til arasındaǵı tezlikte isleydi. Python ónimliliginiń balansı haqqında kóbirek maǵlıwmat alıw ushın 1-baptı kóriń.
Rawajlanıw tásiri
Pythonnıń orınlaw modeliniń basqa bir nátiyjesi sonnan ibarat, rawajlanıw hám orınlaw ortaları arasında haqıyqıy parıq joq. Yaǵnıy, siziń derek kodıńızdı kompilyaciya qılatuǵın hám orınlaytuǵın sistemalar shın mánisinde bir hám sol. Bul uqsaslıq dástúriy kompilyaciya qılınatugın tiller boyınsha tájiriybesi bar oqıwshılar ushın áhmiyetlirek bolıwı múmkin, biraq Pythonda kompilyator hámme waqıt orınlaw waqtında bar hám programmalardı ámelge asıratuǵın sistemanıń bir bólegi bolıp tabıladı.
Bul jaǵday rawajlanıw ciklin ádewir tezlestiredi. Orınlawdı baslamastan aldınnan kompilyaciya qılıw hám baylawdıń keregi joq; tek kodtı jazıp, onı júrgiziw jetkilikli. Bul tilge kóbirek dinamikalıq ózgeshelik qosadı - Python baǵdarlamaları orınlaw waqtında basqa Python baǵdarlamaların dúziw hám orınlaw múmkinshiligin beredi, hám bul kóbinese júdá qolaylı boladı. Mısalı, eval hám exec sıyaqlı qurılǵan funkciyalar Python baǵdarlama kodın óz ishine alǵan qatarlardı qabıl etedi hám orınlaydı.
Bul dúzilis sonıń ushın da Pythondı ónim kustomizaciyasına jaqsı ıqtiyarlı etedi - sebebi Python kodın tez arada ózgertiwge boladı, paydalanıwshılar sistemanıń Python bóleklerin pútkil sistema kodın iye bolmay yamasa kompilyaciya qılmay-aq jerde ózgerte aladı.
Tiykarǵı dárejede, este saqlań, Pythonda bizde tek ǵana orınlaw waqtı bar - hesh qanday dáslepki kompilyaciya waqtı basqıshı joq, hám hámmesi baǵdarlama júrip atırǵanda júz beredi. Bul hátte funkciyalar menen klasslardı jaratıw hám modullerdi baylaw sıyaqlı operaciyalardı da óz ishine aladı. Bunday waqıyalar kóbirek statikalıq tillerde orınlawdan aldın júz beredi, biraq Pythonda baǵdarlamalar orınlanǵanda júz beredi. Kórgenimizdey, juwmaqlawshı tásir ayırım oqıwshılar úyrengen nársege qaraǵanda ádewir dinamikalıq baǵdarlamalastırıw tájiriybesin payda etedi.
Orınlaw Modeli Variantları
Aldıǵa ótpesten burın, aldıńǵı bólimde berilgen ishki orınlaw aǵımı búgingi kúndegi Pythonnıń standart ámelge asırılıwın kórsetedi, biraq ol Python tiliniń ózi ushın haqıyqıy talap emes ekenin aytıp ótiw kerek. Sonıń ushın, orınlaw modeli waqıt ótiwi menen ózgeriwge beyim. Haqıyqatında, 2-2-súwrettegi kórinisti azǵana ózgertetuǵın bir neshe sistemalar álleqashan bar. Kel, bul variantlardıń eń kórneklilerin izertlew ushın bir neshe minut ajıratayıq.
Python Ámelge Asırıw Alternativleri
Shınında da, bul kitap jazılıp atırǵan waqıtta Python tiliniń úsh tiykarǵı ámelge asırılıwı bar - CPython, Jython hám IronPython - sonıń menen birge Stackless Python sıyaqlı bir qansha ekinshi dárejeli ámelge asırıwlar da bar. Qısqasha aytqanda, CPython - bul standart ámelge asırıw; basqalarınıń hámmesinıń júdá anıq maqsetleri hám wazıypaları bar. Olardıń hámmesi birdey Python tilin ámelge asıradı, biraq baǵdarlamalardı hár qıylı usıllar menen orınlaydı.
CPython
Pythonnıń dáslepki hám standart ámelge asırılıwı, onı basqa ekewi menen salıstırǵıńız kelgende, ádette CPython dep ataladı. Onıń atı kóshirmeli ANSI C til kodında jazılǵanınan kelip shıqqan. Bul - siz http://www.python.org saytınan alıp, ActivePython tarqatılıwı menen alatuǵın hám kópshilik Linux hám Mac OS X mashinalarda avtomatik túrde bar bolatuǵın Python. Eger mashinańızda aldın ala ornatılǵan Python nusqasın tapsańız, ol, kompaniyańız Pythondı júdá arnawlı usıllar menen qollanbaytıǵın bolsa, itimallıǵı joqarı CPython boladı.
Eger siz Python menen Java yamasa .NET baǵdarlamaların skriptlestiriwdi qálemeseńiz, siz, sózsiz, standart CPython sistemasın qollanıwıńız kerek. Ol tildiń anıqlawshı ámelge asırılıwı bolǵanlıǵı sebepli, ol eń tez islewge, eń tolıq bolıwǵa hám alternativ sistemalarǵa qaraǵanda bekkem bolıwǵa beyim. 2-2-súwret CPythonnıń orınlaw waqtı arxitekturasın kórsetedi.
Jython
Jython sisteması (dáslep JPython dep tanılǵan) - Python tiliniń Java baǵdarlamalastırıw tili menen birlestiriw ushın arnalǵan alternativ ámelge asırılıwı. Jython Python derek kodın Java bayt kodına kompilyaciya qılatuǵın hám nátiyjedegi bayt kodtı Java Virtual Mashinasına (JVM) jiberetuǵın Java klasslarınan turadı. Baǵdarlamashılar ele de ádettegidey Python kórsetpelerin .py tekst fayllarında kodlaydı; Jython sisteması tiykarınan 2-2-súwrettegi oń táreptegi eki sharikti Java tiykarındaǵı ekvivalentler menen almastıradı.
Jythonnıń maqseti - CPythonnıń Python arqalı C hám C++ komponentlerin skriptlestiriwge múmkinshilik beriwi sıyaqlı, Python kodınıń Java baǵdarlamaların skriptlestiriwine ruqsat beriw. Onıń Java menen integraciyası ájayıp dárejede tegis. Python kodı Java bayt kodına awdarılǵanlıǵı sebepli, ol orınlaw waqtında haqıyqıy Java baǵdarlaması sıyaqlı kórinedi hám seziledi. Jython skriptleri veb-appletler hám servletler sıpatında xızmet ete aladı, Java tiykarındaǵı GUIlardı qura aladı hám taǵı basqalar. Bunnan tısqarı, Jython Python kodınıń Java klassların, olar Pythonda kodlanǵanday, import qılıwına hám paydalanıwına múmkinshilik beretugın integraciya qollawın óz ishine aladı.
Biraq, Jython CPythonǵa qaraǵanda ásterek hám kem bekkem bolǵanlıǵı sebepli, ol kóbinese Java baǵdarlamashılarınıń Java kodına aldınǵı interfeys bolatuǵın skriptlew tilin izlep atırǵanlar ushın qızıǵıwshılıq tuwdıratıǵın qural sıpatında qaraladı.
IronPython
Pythonnıń úshinshi ámelge asırılıwı bolǵan hám CPython hám Jythonnan jańalaw bolǵan IronPython, Python baǵdarlamalarınıń Microsofttıń Windows ushın .NET Frameworkı menen islewge arnalǵan baǵdarlamalar, sonday-aq Linux ushın Mono ashıq jeke ekvivalenti menen integraciyalanıwına múmkinshilik beriw ushın dizayn etilgen. .NET hám onıń C# baǵdarlamalastırıw tili orınlaw sisteması, Microsofttıń burınǵı COM modeli ruwxında, til jaqtan neytral obyekt kommunikaciya qatlamı bolıwǵa arnalǵan.
IronPython Python baǵdarlamalarına basqa .NET tillerinen erisiwi múmkin bolǵan klient hám server komponentleri sıpatında háreket etiw imkaniyatın beredi. Ámelge asırılıwı boyınsha, IronPython Jythonǵa júdá uqsas (haqıyqatında, ol birdey dóretiwshi tárepinen islep shıǵılǵan) - ol 2-2-súwrettegi aqırǵı eki sharikti .NET ortalıǵında orınlaw ushın ekvivalentler menen almastıradı. Jython sıyaqlı, IronPythonnıń da arnawlı fokusı bar - ol tiykarınan Pythondı .NET komponentleri menen integraciyalaw menen shuǵıllanıwshı baǵdarlamashılar ushın qızıqlı.
Biraq, Microsoft tárepinen rawajlandırılıp atırǵanlıǵı sebepli, IronPython jaqsıraq iskerlik kórsetiw ushın ayırım áhmiyetli optimizaciya quralların paydalanıw imkaniyatına iye bolıwı múmkin. Men bunı jazıp atırǵan waqıtta IronPythonnıń kólemi ele rawajlanıp atır; qosımsha maǵlıwmatlar ushın Python onlayn resursların kóriń yamasa internetten izleń.
Orınlaw Optimizaciya Quralları
CPython, Jython hám IronPython hámmesi Python tilin uqsas usıllar menen ámelge asıradı: jeke kodtı bayt kodqa kompilaciya qılıw hám bayt kodtı sáykes virtual mashinada orınlaw arqalı. Basqa sistemalar, sonıń ishinde Psyco "just-in-time" kompilyatorı hám Shedskin C++ awdarıwshısı, tiykarǵı orınlaw modelin optimizaciyalaw ushın háreket etedi. Bul sistemalar házirgi waqıtta Python kárerańızda talap etiletuǵın bilim emes, biraq olardıń orınlaw modelindegi ornına qısqa itibar beriw, ulıwma modeldi túsindiriwge járdem beriwi múmkin.
Psyco "just-in-time" kompilyatorı
Psyco sisteması basqa bir Python ámelge asırılıwı emes, al baǵdarlamalardı tezirek jumıs islewine múmkinshilik beriw ushın bayt kod orınlaw modelin keńeytetuǵın komponent bolıp tabıladı. 2-2-súwret kóz-qarasınan, Psyco - baǵdarlama jumıs islep atırǵan waqıtta tip haqqında maǵlıwmattı jıynap hám paydalanıp, baǵdarlamanıń bayt kodınıń bóleklerin tezirek orınlaw ushın haqıyqıy binar mashina kodına awdaratuǵın PVM-niń jaqsılanıwı. Psyco bul awdarmanı kodqa ózgerisler kirgiziw yamasa rawajlandırıw barısında ayrıqsha kompilaciya basqıshın talap etpesten ámelge asıradı.
Ulıwma alǵanda, siziń baǵdarlamańız jumıs islep atırǵanda, Psyco jetkerip berilip atırǵan obyektlerdiń túrleri haqqında maǵlıwmat jıynaydı; bul maǵlıwmat sol obyekt tipleri ushın arnawlı jobalastırılǵan júdá nátiyjeli mashina kodın payda etiw ushın qollanılıwı múmkin. Payda etilgennen keyin, mashina kodı baǵdarlamańızdıń ulıwma orınlanıwın tezlestiriw ushın dáslepki bayt kodınıń sáykes bólegin almastıradı. Juwmaqlawshı nátiyje sonda, Psyco menen siziń baǵdarlamańız waqıt ótiwi menen hám jumıs barısında ádewir tezlesedi. Ideal jaǵdaylarda, ayırım Python kodları Psyco astında kompilaciya qılınǵan C kodı sıyaqlı tez bolıwı múmkin.
Bayt kodtan bul awdarma baǵdarlama orınlanıw waqtında júz beretuǵın bolǵanlıqtan, Psyco ulıwma jaǵdayda "just-in-time" (JIT) kompilyatorı dep tanıladı. Degen menen, Psyco ayırım oqıwshılar Java tili ushın kórgen JIT kompilyatorlarınan birqansha parıq qıladı. Haqıyqatında, Psyco arnawlı JIT kompilyatorı bolıp tabıladı - ol siziń baǵdarlamańız haqıyqatında qollanıp atırǵan maǵlıwmat tiplerine arnap jobalastırılǵan mashina kodın payda etedi. Mısalı, eger siziń baǵdarlamańızdıń bir bólegi hár qıylı waqıtta hár túrli maǵlıwmat tiplerin qollansa, Psyco hár bir túrli tip kombinaciyasın qollap-quwatlaw ushın mashina kodınıń hár qıylı versiyaların payda etiwi múmkin.
Psyco Python kodın áhmiyetli dárejede tezlestiretuǵını kórsetilgen. Onıń veb-betine muwapıq, Psyco "ózgertilmegen Python interpretatorı hám ózgertilmegen derek kodı menen, tek ǵana dinamikalıq júkleniwshi C keńeytpe moduli arqalı 2x ten 100x ke shekem tezlestiriwdi, ádette 4x tezlestiriwdi" támiyinleydi. Birdey áhmiyetke iye bolǵan nárse, eń úlken tezlesiwler taza Python tilinde jazılǵan algoritmlik kod ushın ámelge asırıladı - bul ádette optimizaciya ushın C tiline kóshiriw múmkin bolǵan kodtıń dál túri. Psyco menen bunday kóshiriwler ele de az áhmiyetli boladı.
Psyco ele Pythonnıń standart bólegi emes; sizge onı bólek júklep alıw hám ornatıw kerek boladı. Ol ele izertlew proekti bolıp esaplanadı, sonlıqtan onıń rawajlanıwın onlayn baqlawıńız kerek boladı. Haqıyqatında, usı waqıtta Psyco ele óz aldına júklep alınıp hám ornatılsa da, sistemanıń kóp bólegi aqır-aqıbetinde jańalaw "PyPy" proektine sińdirilip ketiwi múmkin - bul Psyco sıyaqlı optimizaciyalardı jaqsıraq qollap-quwatlaw ushın Pythonnıń PVM in Python kodında qayta iske asırıw háreketi.
Bálkim, Psyco nıń eń úlken kemshiligi - ol házirgi waqıtta tek Intel x86 arxitekturalı chipler ushın mashina kodın payda etedi, biraq buǵan Windows hám Linux kompyuterleri hám jaqında shıqqan Mac ler kiredi. Psyco keńeytpesi hám payda bolıwı múmkin bolǵan basqa JIT háreketleri haqqında tolıǵıraq maǵlıwmat alıw ushın http://www.python.org saytına kiriń; siz sonday-aq Psyco nıń bas betin kórip shıǵıwıńız múmkin, ol házirgi waqıtta http://psyco.sourceforge.net mánzilinde jaylasqan.
Shedskin C++ awdarıwshısı
Shedskin - bul Python baǵdarlamasın orınlawǵa basqasha usıldı qollanıwshı payda bolıp atırǵan sistema - ol Python derek kodın C++ kodına awdarıwǵa háreket etedi, soń kompyuterińizdiń C++ kompilyatorı onı mashina kodına kompilaciya qıladı. Usılay etip, ol Python kodın iske túsiriwdiń platforma-neytral usılın kórsetedi.
Bul sózlerdi jazıp atırǵan waqtımda Shedskin ele eksperimentallıq basqıshta, hám ol Python baǵdarlamaların texnikalıq jaqtan normal Python bolmaǵan anıq statikalıq tipke iye sheklewge iye qıladı, sonlıqtan biz bul jerde qosımsha túsinik bermeymiz.
Dáslepki nátiyjeler, biraq, onıń orınlaw tezligi boyınsha hám standart Python nan, hám Psyco keńeytpesinen asıp ketiw potencialına iye ekenligin kórsetedi, hám bul úmitli proekt. Proekttiń házirgi jaǵdayı haqqında tolıǵıraq maǵlıwmat alıw ushın internetten izleń.
Muzlatılǵan binarlar
Geyde adamlar "haqıyqıy" Python kompilyatorın soraǵanda, olar negizinde Python baǵdarlamalarınan ózbetinshe orınlanatuǵın binar faylların jaratıw usılın izlep atırǵan boladı. Bul orınlaw procesi koncepciyasınan góre, kóbirek qaplaw hám jiberiwge baylanıslı ideya, biraq ol belgili dárejede baylanıslı.
Internetten alıp bolatuǵın úshinshi tárep qurallardıń járdeminde, Python baǵdarlamalarıńızdı haqıyqıy orınlanatuǵın fayllarǵa aylandırıw múmkin, olar Python dúnyasında muzlatılǵan binarlar dep ataladı. Muzlatılǵan binarlar siziń baǵdarlama fayllarıńızdıń bayt kodın, PVM (interpretator) menen birge hám baǵdarlamaǵa kerekli barlıq Python qollap-quwatlaw faylların bir paketke jıynaydı.
Bul temanıń bir neshe variantları bar, biraq aqırǵı nátiyje bir dana binar orınlanatuǵın baǵdarlama bolıwı múmkin (mısalı, Windows ta .exe fayl), onı tutınıwshılarǵa ańsat jiberiwge boladı. 2-2-súwrette kórsetilgendey, bayt kod hám PVM bir komponentke biriktirilgen - muzlatılǵan binar faylǵa.
Búgingi kúnde muzlatılǵan binarlar jaratıwǵa qábiletli úsh tiykarǵı sistema bar: py2exe (Windows ushın), PyInstaller (py2exe ge uqsas, biraq Linux hám Unix ta da isleydi hám ózi ornatılatuǵın binarlar jarata aladı), hám freeze (dáslepki). Bul qurallardı Pythonnan bólek alıwıńız kerek bolıwı múmkin, biraq olar biypul ashıq. Olar úziliksiz rawajlanıp atır, sonlıqtan bul qurallar haqqında tolıǵıraq maǵlıwmat alıw ushın http://www.python.org saytına yamasa ózińiz qálegen izlew sistemasına baylanısıń.
Bul sistemalardıń kólemi haqqında túsinik beriw ushın, py2exe tkinter, PMW, wxPython hám PyGTK GUI kitapxanaların qollanıwshı óz aldına baǵdarlamalardı; pygame oyın dúziw quralların qollanıwshı baǵdarlamalardı; win32com klient baǵdarlamaların hám basqalardı muzlata aladı.
Muzlatılǵan binarlar haqıyqıy kompilyatordıń shıǵısı menen birdey emes - olar bayt kodtı virtual mashina arqalı iske túsiredi. Sonlıqtan, múmkin bolǵan iske túsiw tezleniwin esapqa almaǵanda, muzlatılǵan binarlar dáslepki derek faylları menen birdey tezlikte isleydi.
Muzlatılǵan binarlar kishi emes (olarda PVM bar), biraq házirgi standartlar boyınsha olar ádettegiden tıs úlken de emes. Biraq, Python muzlatılǵan binarda jaylasqanlıǵı sebepli, siziń baǵdarlamanı iske túsiriw ushın onı alıwshı tárepte ornatıw shárt emes. Bunnan tısqarı, siziń kodıńız muzlatılǵan binarda jaylasqanlıǵı sebepli, ol alıwshılardan tábiyiy jasırın boladı.
Bul bir fayllı qaptaw sxeması ásirese kommerciyalıq baǵdarlama islep shıǵarıwshılar ushın júdá qızıqlı. Mısalı, tkinter quralları tiykarında Pythonda jazılǵan paydalanıwshı interfeysi baǵdarlaması atqarılıwshı fayl túrinde muzlatılıp, CD diskte yamasa internette óz-ózine jetkilikli baǵdarlama sıpatında jiberiliw múmkin. Aqırǵı paydalanıwshılarǵa jiberilgen baǵdarlamanı iske túsiriw ushın Pythondı ornatıw (hatteki ol haqqında biliw de) shárt emes.
Basqa orınlaw variantları
Python baǵdarlamalarıń iske túsiriwdiń basqa da sxemaları bar bolıp, olardıń maqsetleri anıǵıraq:
• Stackless Python sisteması - bul standart CPython ámelge asırıwınıń variantı bolıp, C tiliniń shaqırıw steginde halattı saqlap qalmaydı. Bul Pythondı kishi stek arxitekturalarına kóshiriwdi ańsatlastıradı, nátiyjeli kóp processorlı variantlardı usınadı hám korutinalar sıyaqlı jańa baǵdarlamalastırıw strukturaların qollap-quwatlaydı.
• Cython sisteması (Pyrex proektiniń jumısı tiykarında) - bul Python kodın C funkciyaların shaqırıw hám ózgeriwshiler, parametrler hám klass atributları ushın C tip deklaraciyaların qollanıw múmkinshiligi menen birlestirgen gibrid til. Cython kodı Python/C API dı qollanıwshı C kodına kompilyaciya etiliw múmkin, keyin tolıq kompilyaciya etiliwi múmkin. Standart Python menen tolıq úylesimli bolmasa da, Cython sırtqı C kitapxanaların ornatıp alıw hám Python ushın nátiyjeli C keńeytpelerin kodlaw ushın paydalı bolıwı múmkin.
Bul sistemalar haqqında tolıǵıraq maǵlıwmat alıw ushın, internetten jańa siltemelerdi izleń.
Keleshektegi múmkinshilikler?
Aqırında, bul jerde súwretlengen orınlaw waqtındaǵı atqarıw modeli Python tiliniń óziniń emes, al onıń házirgi ámelge asırılıwınıń nátiyjesі ekenin este tutıw kerek. Mısalı, bul kitaptıń qollanılıw múddeti ishinde Python derek kodın mashina kodına awdaratuǵın tolıq, dástúrli kompilyator payda bolıwı múmkin (biraq jigirma jılǵa jaqın waqıt dawamında bunday bolǵan joq!). Keleshekte jańa bayt kod formatları hám ámelge asırıw variantları da qabıl etiliw múmkin. Mısalı:
• Parrot proektiniń maqseti - hár qıylı baǵdarlamalastırıw tilleri ushın ulıwma bayt kod formatın, virtual mashinanı hám optimizaciya texnikasın usınıw (http://www.python.org saytına qarań). Pythonnıń óz PVM-i Python kodın Parrotqa qaraǵanda nátiyjeli túrde orınlaydı, biraq Parrottıń qalay rawajlanatuǵını ele belgisiz.
• PyPy proekti - bul jańa ámelge asırıw texnikasın qollaw ushın PVM-di Pythonnıń ózinde qayta ámelge asırıw háreketi. Onıń maqseti - Pythonnıń tez hám iykemlі ámelge asırılıwın jaratıw.
• Google támiyinlegen Unladen Swallow proektiniń maqseti - standart Pythondı kem degende 5 ese tezlestiriw hám kóp jaǵdaylarda C tilin almastıra alatuǵınday tez etiw. Bul CPythonnıń optimizaciya tarmaǵı bolıp, tolıq úylesimli hám ádewir tez bolıwı názerde tutılǵan. Bul proekt sonday-aq, haqıyqıy Python potokların waqıt boyınsha bir-birine qabatlastırıwǵa jol qoymaytuǵın Python kóp potoklı Global Interpretator Qulpın (GIL) alıp taslaw úmitin de bildiredi. Bul házirgi waqıtta Google injenerleri tárepinen ashıq derek retinde rawajlandırılıp atırǵan payda bolıp kiyatırǵan proekt; dáslepki náwbette Python 2.6 nusqasın obyekt etip alǵan, biraq 3.0 nusqası da onıń ózgerislerin óz ishine alıwı múmkin. Eń sońǵı maǵlıwmatlar ushın Google-dan izlew kerek.
Bunday keleshektegi ámelge asırıw sxemaları Pythonnıń orınlaw waqtındaǵı qurılısın bir qansha ózgertiwi múmkin bolsa da, bayt kod kompilyatorı ele uzaq waqıt dawamında standart bolıp qalatuǵını itimal. Bayt kodınıń kóshirmeligі hám orınlaw waqtındaǵı iykemliligi kóplegen Python sistemalarınıń áhmiyetli ózgeshelikleri bolıp tabıladı. Bunnan tısqarı, statikalıq kompilyaciyaǵa qollap-quwatlaw ushın tip sheklewleri deklaraciyaların qosıw Python kodın jazıwdıń iykemliligin, qısqalıǵın, ápiwayılıǵın hám ulıwma ruwxın buzǵan bolar edi. Pythonnıń júdá dinamikalıq tábiyatına baylanıslı, keleshektegi hár qanday ámelge asırıw házirgi PVM-niń kóplegen elementlerin saqlap qalıwı itimal.
Bap juwmaǵı
Bul bapta Pythonnıń orınlaw modeli (Python siziń baǵdarlamalarıńızdı qalay orınlaydı) tanıstırıldı hám bul modeldiń ayırım keń tarqalǵan variantları (waqtında kompilyaciya qılıwshılar hám basqalar) úyrenildi. Python skriptlerin jazıw ushın Python ishki qurılısın túsiniw shárt bolmasa da, bul baptıń temaları menen azǵana tanısıw sizge óz baǵdarlamalarıńızdıń qalay isleytuǵının tolıq túsiniwge járdem beredi. Keyingi bapta siz ózińizdiń kodıńızdı haqıyqattan da orınlap baslaysız. Biraq, dáslep, ádettegidey bap sorawları keledi.
Bilimińizdi tekseriń: Sorawlar
1. Python interpretatorı degen ne?
2. Derek kodı degen ne?
3. Bayt kodı degen ne?
4. PVM degen ne?
5. Pythonnıń standart orınlaw modeliniń eki variantın atań.
6. CPython, Jython hám IronPython qanday tárepleri menen parıq qıladı?
Bilimińizdi tekseriń: Juwaplar
1. Python interpretatorı - bul siz jazǵan Python baǵdarlamaların orınlaytuǵın baǵdarlama.
2. Derek kodı - bul siz baǵdarlamańız ushın jazǵan buyrıqlar. Ol ádette .py keńeytpesi menen tamamlanıwshı tekst fayllarındaǵı tekstten ibarat.
3. Bayt kodı - bul Python kompilyaciya qılǵannan keyingi baǵdarlamańızdıń tómengi dárejedegi forması. Python bayt kodın avtomatik túrde .pyc keńeytpeli fayllarǵa saqlaydı.
4. PVM - bul Python Virtual Machine (Python Virtual Mashinası) - kompilyaciya qılınǵan bayt kodıńızdı interpretaciya qılatuǵın Pythonnıń orınlaw dvigateli.
5. Psyco, Shedskin hám muzlatılǵan binarlar - bulardıń barlıǵı orınlaw modeliniń variantları.
6. CPython - tildiń standart ámelge asırılıwı. Jython hám IronPython Python baǵdarlamaların sáykes Java hám .NET ortalıqlarında paydalanıw ushın ámelge asıradı; olar Python ushın alternativ kompilyatorlar bolıp tabıladı.
Paydalanılǵan ádebiyat:
Learning Python, Fourth Edition by Mark Lutz CHAPTER 2
How Python Runs Programs
Python baǵdarlamalardı qalay orınlaydı
Bul bap hám keyingisi baǵdarlama orınlanıwına tez itibar beredi - kodtı qanday iske túsiresiz hám Python onı qalay ámelge asıradı. Bul bapta biz Python interpretatorın úyrenemiz. 3-bapta bolsa sizge óz baǵdarlamalarıńızdı qalay iske túsiriw hám ámelge asırıw kórsetiledi.
Iske túsiriw detalları tábiyiy túrde platformaǵa baylanıslı, hám bul eki baptaǵı ayırım materiallar siz isleytuǵın platformaǵa qollanılmawı múmkin, sonlıqtan siz óz maqsetińizge tiyisli bolmaǵan bólimlerdi ótkizip jiberiwińizge boladı. Sonday-aq, aldın uqsaǵan qurallardan paydalanǵan hám tildiń negizine tezirek jetiwdi qáleytuǵın tájiriybeli oqıwshılar bul baptıń bir bólegin "keleshekte paydalanıw ushın" saqlaw kerek bolıwı múmkin. Qalǵanlarıńız ushın, qáne, kodtı qalay iske túsiriwdi úyrenemiz.
Python interpretatorın tanıstırıw
Usı waqıtqa shekem, men kóbinese Python haqqında programmalastırıw tili sıpatında sóylep keldim. Biraq, házirgi ámelge asırılıwında, ol sonday-aq interpretator dep atalatuǵın programmalıq támiyinlew bolıp tabıladı. Interpretator - basqa programmalardı orınlaytuǵın programma túri. Siz Python programmasın jazǵanıńızda, Python interpretatorı siziń programmańızdı oqıydı hám ondaǵı kórsetpelerdi orınlaydı. Shınında da, interpretator - siziń kodıńız benen kompyuterińizdiń apparat quralları arasındaǵı programmalıq logika qatlamı bolıp tabıladı.
Python paketi kompyuterińizge ornatılǵanda, ol bir qansha komponentlerdi payda etedi - eń keminde, interpretator hám járdem kitapxanası. Onı qanday qollanıwıńızǵa baylanıslı, Python interpretatorı orınlanatuǵın programma túrinde yamasa basqa programmaǵa baylanısqan kitapxanalar toplamı túrinde bolıwı múmkin. Qaysı Python túrin qollanıwıńızǵa baylanıslı, interpretatordıń ózi C programması, Java klasları toplamı yamasa basqa nárse sıpatında ámelge asırılıwı múmkin. Qanday túrde bolsa da, siziń jazǵan Python kodıńız bárqulla usı interpretator arqalı ámelge asırılıwı kerek. Hám bunı múmkin etiw ushın, siz kompyuterińizge Python interpretatorın ornatıwıńız kerek.
Python ornatıw detalları platformaǵa qarap ózgeredi hám A qosımshada tereńirek qamtıp ótilgen. Qısqasha aytqanda:
• Windows paydalanıwshıları óz-ózin ornatıwshı orınlanatuǵın fayllardı júklep alıp iske túsiredi, bul olardıń kompyuterlerine Pythondı ornatadı. Tek eki ret basıp, barlıq sorawlarǵa "Awa" yamasa "Keyingi" dep juwap beriń.
• Linux hám Mac OS X paydalanıwshılarında ádette olardıń kompyuterlerinde qollanıwǵa jaramlı Python aldın ala ornatılǵan boladı - bul búgingi kúnde bul platformalarda standart komponent bolıp esaplanadı.
• Ayırım Linux hám Mac OS X paydalanıwshıları (hám kópshilik Unix paydalanıwshıları) Pythondı onıń tolıq derek kodı distribuciya paketinen kompilyaciya qıladı.
• Linux paydalanıwshıları sonday-aq RPM faylların taba aladı, al Mac OS X paydalanıwshıları Macke arnalǵan hár qıylı ornatıw paketlerin taba aladı.
• Basqa platformalarda sol platformalarǵa tiyisli ornatıw usılları bar. Mısalı, Python uyalı telefonlarda, oyın pristavkalarında hám iPodlarda da bar, biraq ornatıw usılları júdá hár qıylı boladı.
Pythonnıń ózin http://www.python.org saytınıń júklep alıw betinen alıwǵa boladı. Sonday-aq onı basqa da hár qıylı tarqatıw kanalları arqalı tabıwǵa boladı. Esińizde bolsın, Pythondı ornatıwdan aldın onıń aldınnan bar-joqlıǵın tekseriw kerek. Eger siz Windows-ta jumıs islep atırǵan bolsańız, Pythondı ádette 2-1-súwrette kórsetilgendey "Start" menyusınan tabasız (bul menyu opciyaları keyingi bapta talqılanadı). Unix hám Linux-ta Python kóbinese siziń /usr katalog aǵashıńızda jaylasqan boladı. Ornatıw usılları platformaǵa baylanıslı bolǵanlıqtan, bul jerde qalǵan máselelerdi qısqasha túsindirip ótemiz. Ornatıw procesi haqqında tolıǵıraq maǵlıwmat alıw ushın A qosımshasın qarań. Usı hám keyingi bap ushın men sizde Python jumısqa tayın dep esaplayman.
Programmanı orınlaw
Python skriptin jazıw hám iske túsiriw ne ańlatqanı, siz bul wazıypalardı programist sıpatında kórip shıǵasız ba yamasa Python interpretatorı sıpatında kórip shıǵasız ba, soǵan baylanıslı. Eki kóz-qarasta Python programmalastırıwda áhmiyetli perspektivalar beredi.
Programisttiń kóz-qarası
Eń ápiwayı túrde, Python programması - bul tek Python operatorların óz ishinde saqlaytuǵın tekst faylı. Mısalı, tómendegi script0.py dep atalatuǵın fayl - men oylap taba alatuǵın eń ápiwayı Python skriptleriniń biri, biraq ol tolıq isleytuǵın Python programması bolıp esaplanadı:
print('hello world')
print(2 ** 100)
Bul fayl eki Python print operatorın óz ishine aladı, olar tek qatardı (tırnaqsha ishindegi tekst) hám sanlı ańlatpa nátiyjesin (2 niń 100-dárejesin) shıǵıs aǵımına shıǵaradı.
Házirshe bul kodtıń sintaksisi haqqında qayǵırmań - bul bapta bizdi tek onı iske túsiriw qızıqtıradı. Men print operatorın hám nege siz Pythonda 2 ni 100-dárejege kótere alasız hám bunda asıp ketiwshilik bolmaydı, bulardı kitaptıń keyingi bólimlerinde túsindiremen.
2-1 súwret. Windows ta ornatılǵanda, Python Baslawı túymesiniń menyusında usılay kórinedi. Bul versiyadan versiyaǵa azǵana ózgeriwi múmkin, biraq IDLE rawajlandırıw grafikalıq interfeysin baslaydı, al Python ápiwayı interaktiv sessiya baslaydı. Sonday-aq, bul jerde standart qollanba kitapları hám PyDoc hújjet dvigateli (Modul Hújjetleri) bar.
Siz usınday operatorlar faylın qálegen tekst redaktorı menen dúze alasız. Kóplikke kóre, Python programma fayllarına .py menen tamamlanatuǵın atlar beriledi; texnikalıq jaqtan, bul ataw sxeması tek "import" etiletuǵın fayllar ushın talap etiledi, bul haqqında kitaptıń keyingi bólimlerinde aytıladı, biraq kópshilik Python faylları birdeylik ushın .py atlarına iye.
Usı operatorlardı tekst faylına jazıp bolǵanıńızdan soń, siz Pythonǵa faydı orınlawdı buyırıwıńız kerek - bul ápiwayı túrde fayldaǵı barlıq operatorlardı joqarıdan tómenge qaray, bir-biriniń izinen orınlaw degendi ańlatadı. Keyingi bapta kóriwińiz boyınsha, siz Python programma faylların komanda qatarı arqalı, olardıń belgilerin basıw arqalı, IDE ler ishinde hám basqa da standart usıllar menen iske túsire alasız.
Eger hámmesi jaqsı bolsa, faydı orınlaǵanıńızda, eki print operatorınıń nátiyjelerin kompyuterińizdiń qandayda bir jerinen kóresiz - ádette, programmanı iske túsirgen waqtıńızda turǵan aynada kórinedi:
hello world
1267650600228229401496703205376
Mısalı, mınanı Windows noutbukta DOS komanda qatarınan (ádette Accessories programma menyusında tabılatuǵın Command Prompt aynası dep ataladı) usı skriptti iske túsirgenimde, onıń hesh qanday aqmaq qáteliklerge iye emes ekenin tekseriw ushın ne bolǵanın kórsetedi:
C:\temp> python script0.py
hello world
1267650600228229401496703205376
Biz házir bir qatardı hám bir sandı basıp shıǵaratuǵın Python skriptin iske túsirdik. Bul kod penen programmalastırıw sıylıqların utıp ala almaymız, biraq ol programmanı orınlawdıń tiykarǵı túsiniklerin túsiniw ushın jetkilikli.
Pythonnıń kóz-qarası
Aldıńǵı bólimde berilgen qısqa túsindirme skript tillerine tán hám kópshilik Python baǵdarlamashıları ushın jetkilikli. Siz kodtı tekst fayllarına jazasız hám sol fayllardı interpretator arqalı iske túsiresiz. Biraq, ishki mexanizmde, Pythonǵa "iske túsir" dep buyırǵanıńızda biraz kóbirek nárse júz beredi. Python programmalastırıw ushın onıń ishki isleytuǵın tártibiniń bilimi qatań talap etilmese de, Pythonnıń orınlanıw strukturasın tiykarǵı túsiniw programmanıń orınlanıwınıń úlken kórinisiniń túsiniwge járdem beredi.
Pythonǵa skriptińizdi iske túsiriwdi buyırǵanıńızda, siziń kodıńız haqıyqatında islewdi baslamastan aldın Python bir neshe qádemlerdi orınlaydı. Atap aytqanda, ol dáslep "bayt kod" dep atalatuǵın nársege kompilyaciya etiledi, soń "virtual mashina" dep atalatuǵın nársege jiberiledi.
Bayt kod kompilyaciyası
Ishki tárepte hám sizden derlik tolıq jasırın halda, programmanı orınlaǵanıńızda Python dáslep siziń derek kodıńızdı (faylıńızdaǵı operatorlardı) bayt kod dep atalatuǵın formatqa kompilyaciya etedi. Kompilyaciya - bul tek awdarıw basqıshı, al bayt kod - siziń derek kodıńızdıń tómengi dárejeli, platformaǵa ǵárezsiz kórinisi. Shama menen, Python siziń hár bir derek kodı operatorın olardı jeke qádemlerge bólip, bayt kod kórsetpeleriniń toparına awdaradı. Bul bayt kodqa awdarıw orınlanıwdı tezletiwge arnalǵan - bayt kodtı siziń tekst faylıńızdaǵı dáslepki derek kodı operatorlarına qaraǵanda ádewir tezirek orınlaw múmkin.
Joqarıdaǵı abzacta bul processtiń sizden derlik tolıq jasırın ekenligi aytılǵanın bayqaǵan bolarsız. Eger Python processi siziń kompyuterińizde jazıw huqıqına iye bolsa, ol programmanıń bayt kodın .pyc keńeytpesi bar fayllarǵa saqlap qoyadı (".pyc" kompilyaciya etilgen ".py" deregin ańlatadı). Bul fayllar bir neshe programmalardı iske túsirgenińizden keyin, tiyisli derek kodı faylları menen birge (yaǵnıy, sol papkalarda) kompyuterińizde payda boladı.
Python bayt kodın usılay iske túsiw waqtın optimallastırıw ushın saqlap qoyadı. Kelesi ret programmańızdı iske túsirgenińizde, eger bayt kod sońǵı ret saqlap qoyılǵannan beri derek kodıńızdı ózgertpegen bolsańız, Python .pyc faylların júkleydi hám kompilyaciya basqıshın ótkizip jiberedi. Python qashan qayta kompilyaciya qılıw kerekligin biliw ushın derek kod hám bayt kod fayllarınıń waqıt belgilerin avtomatik túrde tekserip turadı - eger derek kodıńızdı qayta saqlasańız, bayt kod kelesi ret programmańız iske túsirilgende avtomatik túrde qayta jaratıladı.
Eger Python siziń kompyuterińizge bayt kod faylların jaza almasa da, programmańız jumıs isley beredi - bayt kod yadta payda etiledi hám programma juwmaqlanıwdan-aq ápiwayi túrde óshirilip taslanadı.* Biraq, .pyc faylları iske túsiw waqtın tezlestiretuǵını sebepli, úlkenirek programmalar ushın olardıń jazılıwın támiyinlewdi qáleysiz. Bayt kod faylları sonday-aq Python programmaların tarqatıwdıń bir usılı bolıp tabıladı - hatte dáslepki .py derek kodı faylları joq bolsa da, Python tek .pyc faylların taba alsa da programmanı iske túsire aladı. (Tarqatıwdıń basqa usılı ushın 32-bettegi "Muzlatılǵan binarlar" bólimin kóriń.)
Python Virtual Mashinası (PVM)
Programmańız bayt kodǵa kompilyaciya qılınǵannan keyin (yamasa bayt kod bar bolǵan .pyc fayllarınan júklengennen keyin), ol ádette Python Virtual Mashinası (qısqartırıwdı jaqsı kóretugınlar ushın PVM) dep atalatuǵın nársege orınlaw ushın jiberiledi. PVM esitilgenindey áhmiyetli emes; shınında da, ol bólek programma emes hám onı ózin-ózi ornatıwdıń keregi joq. Ámeliyatta, PVM tek siziń bayt kod kórsetpelerińizdi bir-birlep aylanıp ótip, olardıń operaciyaların orınlaw ushın úlken bir cikl bolıp tabıladı. PVM - bul Pythonnıń orınlaw motorı; ol bárhama Python sistemasınıń bir bólegi sıpatında bar hám ol siziń skriptlerińizdi haqıyqattan orınlaytuǵın komponent bolıp tabıladı. Texnikalıq jaqtan, ol "Python interpretatorı" dep atalatuǵın nárseniń sońǵı basqıshı ǵana.
2-2-súwrette usı jerde táriyiplengen orınlaw strukturası kórsetilgen. Esińizde bolsın, bul quramalılıqtıń barlıǵı Python programmistlerinen bilip turıp jasırılǵan. Bayt kodqa kompilyaciya avtomatik túrde ámelge asadı, al PVM bolsa tek siziń kompyuterińizge ornatılǵan Python sistemasınıń bir bólegi. Taǵı da, programmistler (baǵdarlamashılar) ápiwayı túrde kod jazadı hám operatorlar faylların iske túsiredi.
Ónimlilikke tásiri
C hám C++ sıyaqlı tolıq kompilyaciya qılınatugın tiller boyınsha tájiriybesi bar oqıwshılar Python modelinde bir qansha parıqlardı bayqawı múmkin. Birinshiden, Python jumısında ádette qurıw yamasa "make" basqıshı bolmaydı: kod jazılǵannan keyin dárhal iske túsedi. Ekinshiden, Python bayt kodı ekilik mashina kodı emes (mısalı, Intel chipı ushın kórsetpeler). Bayt kod - bul Pythonǵa tán bolǵan arnawlı kórinis.
2-2-súwret. Pythonnıń dástúrli orınlaw modeli: siz jazǵan derek kodı bayt kodına awdarıladı, soń ol Python Virtual Mashinası tárepinen orınlanadı. Sizdiń kodıńız avtomatik túrde kompilyaciya qılınadı, biraq keyin ol interpretaciya qılınadı.
Bul ne ushın ayırım Python kodlarınıń 1-bapta táriyiplengendey C yamasa C++ kodı sıyaqlı tez jumıs islemewiniń sebebi bolıp tabıladı - PVM cikli, CPU chipi emes, ele de bayt kodın interpretaciya qılıwı kerek, al bayt kod kórsetpeleri CPU kórsetpelerine qaraǵanda kóbirek jumıs talap etedi. Ekinshi tárepten, klassikalıq interpretatorlardan parıqlı, ele de ishki kompilyaciya basqıshı bar - Python hár bir derek operatorın qayta-qayta analiz qılıw hám qayta ózgertiwdi talap etpeydi. Juwmaqlap aytqanda, taza Python kodı dástúriy kompilyaciya qılınatuǵın til menen dástúriy interpretaciya qılınatuǵın til arasındaǵı tezlikte isleydi. Python ónimliliginiń balansı haqqında kóbirek maǵlıwmat alıw ushın 1-baptı kóriń.
Rawajlanıw tásiri
Pythonnıń orınlaw modeliniń basqa bir nátiyjesi sonnan ibarat, rawajlanıw hám orınlaw ortaları arasında haqıyqıy parıq joq. Yaǵnıy, siziń derek kodıńızdı kompilyaciya qılatuǵın hám orınlaytuǵın sistemalar shın mánisinde bir hám sol. Bul uqsaslıq dástúriy kompilyaciya qılınatugın tiller boyınsha tájiriybesi bar oqıwshılar ushın áhmiyetlirek bolıwı múmkin, biraq Pythonda kompilyator hámme waqıt orınlaw waqtında bar hám programmalardı ámelge asıratuǵın sistemanıń bir bólegi bolıp tabıladı.
Bul jaǵday rawajlanıw ciklin ádewir tezlestiredi. Orınlawdı baslamastan aldınnan kompilyaciya qılıw hám baylawdıń keregi joq; tek kodtı jazıp, onı júrgiziw jetkilikli. Bul tilge kóbirek dinamikalıq ózgeshelik qosadı - Python baǵdarlamaları orınlaw waqtında basqa Python baǵdarlamaların dúziw hám orınlaw múmkinshiligin beredi, hám bul kóbinese júdá qolaylı boladı. Mısalı, eval hám exec sıyaqlı qurılǵan funkciyalar Python baǵdarlama kodın óz ishine alǵan qatarlardı qabıl etedi hám orınlaydı.
Bul dúzilis sonıń ushın da Pythondı ónim kustomizaciyasına jaqsı ıqtiyarlı etedi - sebebi Python kodın tez arada ózgertiwge boladı, paydalanıwshılar sistemanıń Python bóleklerin pútkil sistema kodın iye bolmay yamasa kompilyaciya qılmay-aq jerde ózgerte aladı.
Tiykarǵı dárejede, este saqlań, Pythonda bizde tek ǵana orınlaw waqtı bar - hesh qanday dáslepki kompilyaciya waqtı basqıshı joq, hám hámmesi baǵdarlama júrip atırǵanda júz beredi. Bul hátte funkciyalar menen klasslardı jaratıw hám modullerdi baylaw sıyaqlı operaciyalardı da óz ishine aladı. Bunday waqıyalar kóbirek statikalıq tillerde orınlawdan aldın júz beredi, biraq Pythonda baǵdarlamalar orınlanǵanda júz beredi. Kórgenimizdey, juwmaqlawshı tásir ayırım oqıwshılar úyrengen nársege qaraǵanda ádewir dinamikalıq baǵdarlamalastırıw tájiriybesin payda etedi.
Orınlaw Modeli Variantları
Aldıǵa ótpesten burın, aldıńǵı bólimde berilgen ishki orınlaw aǵımı búgingi kúndegi Pythonnıń standart ámelge asırılıwın kórsetedi, biraq ol Python tiliniń ózi ushın haqıyqıy talap emes ekenin aytıp ótiw kerek. Sonıń ushın, orınlaw modeli waqıt ótiwi menen ózgeriwge beyim. Haqıyqatında, 2-2-súwrettegi kórinisti azǵana ózgertetuǵın bir neshe sistemalar álleqashan bar. Kel, bul variantlardıń eń kórneklilerin izertlew ushın bir neshe minut ajıratayıq.
Python Ámelge Asırıw Alternativleri
Shınında da, bul kitap jazılıp atırǵan waqıtta Python tiliniń úsh tiykarǵı ámelge asırılıwı bar - CPython, Jython hám IronPython - sonıń menen birge Stackless Python sıyaqlı bir qansha ekinshi dárejeli ámelge asırıwlar da bar. Qısqasha aytqanda, CPython - bul standart ámelge asırıw; basqalarınıń hámmesinıń júdá anıq maqsetleri hám wazıypaları bar. Olardıń hámmesi birdey Python tilin ámelge asıradı, biraq baǵdarlamalardı hár qıylı usıllar menen orınlaydı.
CPython
Pythonnıń dáslepki hám standart ámelge asırılıwı, onı basqa ekewi menen salıstırǵıńız kelgende, ádette CPython dep ataladı. Onıń atı kóshirmeli ANSI C til kodında jazılǵanınan kelip shıqqan. Bul - siz http://www.python.org saytınan alıp, ActivePython tarqatılıwı menen alatuǵın hám kópshilik Linux hám Mac OS X mashinalarda avtomatik túrde bar bolatuǵın Python. Eger mashinańızda aldın ala ornatılǵan Python nusqasın tapsańız, ol, kompaniyańız Pythondı júdá arnawlı usıllar menen qollanbaytıǵın bolsa, itimallıǵı joqarı CPython boladı.
Eger siz Python menen Java yamasa .NET baǵdarlamaların skriptlestiriwdi qálemeseńiz, siz, sózsiz, standart CPython sistemasın qollanıwıńız kerek. Ol tildiń anıqlawshı ámelge asırılıwı bolǵanlıǵı sebepli, ol eń tez islewge, eń tolıq bolıwǵa hám alternativ sistemalarǵa qaraǵanda bekkem bolıwǵa beyim. 2-2-súwret CPythonnıń orınlaw waqtı arxitekturasın kórsetedi.
Jython
Jython sisteması (dáslep JPython dep tanılǵan) - Python tiliniń Java baǵdarlamalastırıw tili menen birlestiriw ushın arnalǵan alternativ ámelge asırılıwı. Jython Python derek kodın Java bayt kodına kompilyaciya qılatuǵın hám nátiyjedegi bayt kodtı Java Virtual Mashinasına (JVM) jiberetuǵın Java klasslarınan turadı. Baǵdarlamashılar ele de ádettegidey Python kórsetpelerin .py tekst fayllarında kodlaydı; Jython sisteması tiykarınan 2-2-súwrettegi oń táreptegi eki sharikti Java tiykarındaǵı ekvivalentler menen almastıradı.
Jythonnıń maqseti - CPythonnıń Python arqalı C hám C++ komponentlerin skriptlestiriwge múmkinshilik beriwi sıyaqlı, Python kodınıń Java baǵdarlamaların skriptlestiriwine ruqsat beriw. Onıń Java menen integraciyası ájayıp dárejede tegis. Python kodı Java bayt kodına awdarılǵanlıǵı sebepli, ol orınlaw waqtında haqıyqıy Java baǵdarlaması sıyaqlı kórinedi hám seziledi. Jython skriptleri veb-appletler hám servletler sıpatında xızmet ete aladı, Java tiykarındaǵı GUIlardı qura aladı hám taǵı basqalar. Bunnan tısqarı, Jython Python kodınıń Java klassların, olar Pythonda kodlanǵanday, import qılıwına hám paydalanıwına múmkinshilik beretugın integraciya qollawın óz ishine aladı.
Biraq, Jython CPythonǵa qaraǵanda ásterek hám kem bekkem bolǵanlıǵı sebepli, ol kóbinese Java baǵdarlamashılarınıń Java kodına aldınǵı interfeys bolatuǵın skriptlew tilin izlep atırǵanlar ushın qızıǵıwshılıq tuwdıratıǵın qural sıpatında qaraladı.
IronPython
Pythonnıń úshinshi ámelge asırılıwı bolǵan hám CPython hám Jythonnan jańalaw bolǵan IronPython, Python baǵdarlamalarınıń Microsofttıń Windows ushın .NET Frameworkı menen islewge arnalǵan baǵdarlamalar, sonday-aq Linux ushın Mono ashıq jeke ekvivalenti menen integraciyalanıwına múmkinshilik beriw ushın dizayn etilgen. .NET hám onıń C# baǵdarlamalastırıw tili orınlaw sisteması, Microsofttıń burınǵı COM modeli ruwxında, til jaqtan neytral obyekt kommunikaciya qatlamı bolıwǵa arnalǵan.
IronPython Python baǵdarlamalarına basqa .NET tillerinen erisiwi múmkin bolǵan klient hám server komponentleri sıpatında háreket etiw imkaniyatın beredi. Ámelge asırılıwı boyınsha, IronPython Jythonǵa júdá uqsas (haqıyqatında, ol birdey dóretiwshi tárepinen islep shıǵılǵan) - ol 2-2-súwrettegi aqırǵı eki sharikti .NET ortalıǵında orınlaw ushın ekvivalentler menen almastıradı. Jython sıyaqlı, IronPythonnıń da arnawlı fokusı bar - ol tiykarınan Pythondı .NET komponentleri menen integraciyalaw menen shuǵıllanıwshı baǵdarlamashılar ushın qızıqlı.
Biraq, Microsoft tárepinen rawajlandırılıp atırǵanlıǵı sebepli, IronPython jaqsıraq iskerlik kórsetiw ushın ayırım áhmiyetli optimizaciya quralların paydalanıw imkaniyatına iye bolıwı múmkin. Men bunı jazıp atırǵan waqıtta IronPythonnıń kólemi ele rawajlanıp atır; qosımsha maǵlıwmatlar ushın Python onlayn resursların kóriń yamasa internetten izleń.
Orınlaw Optimizaciya Quralları
CPython, Jython hám IronPython hámmesi Python tilin uqsas usıllar menen ámelge asıradı: jeke kodtı bayt kodqa kompilaciya qılıw hám bayt kodtı sáykes virtual mashinada orınlaw arqalı. Basqa sistemalar, sonıń ishinde Psyco "just-in-time" kompilyatorı hám Shedskin C++ awdarıwshısı, tiykarǵı orınlaw modelin optimizaciyalaw ushın háreket etedi. Bul sistemalar házirgi waqıtta Python kárerańızda talap etiletuǵın bilim emes, biraq olardıń orınlaw modelindegi ornına qısqa itibar beriw, ulıwma modeldi túsindiriwge járdem beriwi múmkin.
Psyco "just-in-time" kompilyatorı
Psyco sisteması basqa bir Python ámelge asırılıwı emes, al baǵdarlamalardı tezirek jumıs islewine múmkinshilik beriw ushın bayt kod orınlaw modelin keńeytetuǵın komponent bolıp tabıladı. 2-2-súwret kóz-qarasınan, Psyco - baǵdarlama jumıs islep atırǵan waqıtta tip haqqında maǵlıwmattı jıynap hám paydalanıp, baǵdarlamanıń bayt kodınıń bóleklerin tezirek orınlaw ushın haqıyqıy binar mashina kodına awdaratuǵın PVM-niń jaqsılanıwı. Psyco bul awdarmanı kodqa ózgerisler kirgiziw yamasa rawajlandırıw barısında ayrıqsha kompilaciya basqıshın talap etpesten ámelge asıradı.
Ulıwma alǵanda, siziń baǵdarlamańız jumıs islep atırǵanda, Psyco jetkerip berilip atırǵan obyektlerdiń túrleri haqqında maǵlıwmat jıynaydı; bul maǵlıwmat sol obyekt tipleri ushın arnawlı jobalastırılǵan júdá nátiyjeli mashina kodın payda etiw ushın qollanılıwı múmkin. Payda etilgennen keyin, mashina kodı baǵdarlamańızdıń ulıwma orınlanıwın tezlestiriw ushın dáslepki bayt kodınıń sáykes bólegin almastıradı. Juwmaqlawshı nátiyje sonda, Psyco menen siziń baǵdarlamańız waqıt ótiwi menen hám jumıs barısında ádewir tezlesedi. Ideal jaǵdaylarda, ayırım Python kodları Psyco astında kompilaciya qılınǵan C kodı sıyaqlı tez bolıwı múmkin.
Bayt kodtan bul awdarma baǵdarlama orınlanıw waqtında júz beretuǵın bolǵanlıqtan, Psyco ulıwma jaǵdayda "just-in-time" (JIT) kompilyatorı dep tanıladı. Degen menen, Psyco ayırım oqıwshılar Java tili ushın kórgen JIT kompilyatorlarınan birqansha parıq qıladı. Haqıyqatında, Psyco arnawlı JIT kompilyatorı bolıp tabıladı - ol siziń baǵdarlamańız haqıyqatında qollanıp atırǵan maǵlıwmat tiplerine arnap jobalastırılǵan mashina kodın payda etedi. Mısalı, eger siziń baǵdarlamańızdıń bir bólegi hár qıylı waqıtta hár túrli maǵlıwmat tiplerin qollansa, Psyco hár bir túrli tip kombinaciyasın qollap-quwatlaw ushın mashina kodınıń hár qıylı versiyaların payda etiwi múmkin.
Psyco Python kodın áhmiyetli dárejede tezlestiretuǵını kórsetilgen. Onıń veb-betine muwapıq, Psyco "ózgertilmegen Python interpretatorı hám ózgertilmegen derek kodı menen, tek ǵana dinamikalıq júkleniwshi C keńeytpe moduli arqalı 2x ten 100x ke shekem tezlestiriwdi, ádette 4x tezlestiriwdi" támiyinleydi. Birdey áhmiyetke iye bolǵan nárse, eń úlken tezlesiwler taza Python tilinde jazılǵan algoritmlik kod ushın ámelge asırıladı - bul ádette optimizaciya ushın C tiline kóshiriw múmkin bolǵan kodtıń dál túri. Psyco menen bunday kóshiriwler ele de az áhmiyetli boladı.
Psyco ele Pythonnıń standart bólegi emes; sizge onı bólek júklep alıw hám ornatıw kerek boladı. Ol ele izertlew proekti bolıp esaplanadı, sonlıqtan onıń rawajlanıwın onlayn baqlawıńız kerek boladı. Haqıyqatında, usı waqıtta Psyco ele óz aldına júklep alınıp hám ornatılsa da, sistemanıń kóp bólegi aqır-aqıbetinde jańalaw "PyPy" proektine sińdirilip ketiwi múmkin - bul Psyco sıyaqlı optimizaciyalardı jaqsıraq qollap-quwatlaw ushın Pythonnıń PVM in Python kodında qayta iske asırıw háreketi.
Bálkim, Psyco nıń eń úlken kemshiligi - ol házirgi waqıtta tek Intel x86 arxitekturalı chipler ushın mashina kodın payda etedi, biraq buǵan Windows hám Linux kompyuterleri hám jaqında shıqqan Mac ler kiredi. Psyco keńeytpesi hám payda bolıwı múmkin bolǵan basqa JIT háreketleri haqqında tolıǵıraq maǵlıwmat alıw ushın http://www.python.org saytına kiriń; siz sonday-aq Psyco nıń bas betin kórip shıǵıwıńız múmkin, ol házirgi waqıtta http://psyco.sourceforge.net mánzilinde jaylasqan.
Shedskin C++ awdarıwshısı
Shedskin - bul Python baǵdarlamasın orınlawǵa basqasha usıldı qollanıwshı payda bolıp atırǵan sistema - ol Python derek kodın C++ kodına awdarıwǵa háreket etedi, soń kompyuterińizdiń C++ kompilyatorı onı mashina kodına kompilaciya qıladı. Usılay etip, ol Python kodın iske túsiriwdiń platforma-neytral usılın kórsetedi.
Bul sózlerdi jazıp atırǵan waqtımda Shedskin ele eksperimentallıq basqıshta, hám ol Python baǵdarlamaların texnikalıq jaqtan normal Python bolmaǵan anıq statikalıq tipke iye sheklewge iye qıladı, sonlıqtan biz bul jerde qosımsha túsinik bermeymiz.
Dáslepki nátiyjeler, biraq, onıń orınlaw tezligi boyınsha hám standart Python nan, hám Psyco keńeytpesinen asıp ketiw potencialına iye ekenligin kórsetedi, hám bul úmitli proekt. Proekttiń házirgi jaǵdayı haqqında tolıǵıraq maǵlıwmat alıw ushın internetten izleń.
Muzlatılǵan binarlar
Geyde adamlar "haqıyqıy" Python kompilyatorın soraǵanda, olar negizinde Python baǵdarlamalarınan ózbetinshe orınlanatuǵın binar faylların jaratıw usılın izlep atırǵan boladı. Bul orınlaw procesi koncepciyasınan góre, kóbirek qaplaw hám jiberiwge baylanıslı ideya, biraq ol belgili dárejede baylanıslı.
Internetten alıp bolatuǵın úshinshi tárep qurallardıń járdeminde, Python baǵdarlamalarıńızdı haqıyqıy orınlanatuǵın fayllarǵa aylandırıw múmkin, olar Python dúnyasında muzlatılǵan binarlar dep ataladı. Muzlatılǵan binarlar siziń baǵdarlama fayllarıńızdıń bayt kodın, PVM (interpretator) menen birge hám baǵdarlamaǵa kerekli barlıq Python qollap-quwatlaw faylların bir paketke jıynaydı.
Bul temanıń bir neshe variantları bar, biraq aqırǵı nátiyje bir dana binar orınlanatuǵın baǵdarlama bolıwı múmkin (mısalı, Windows ta .exe fayl), onı tutınıwshılarǵa ańsat jiberiwge boladı. 2-2-súwrette kórsetilgendey, bayt kod hám PVM bir komponentke biriktirilgen - muzlatılǵan binar faylǵa.
Búgingi kúnde muzlatılǵan binarlar jaratıwǵa qábiletli úsh tiykarǵı sistema bar: py2exe (Windows ushın), PyInstaller (py2exe ge uqsas, biraq Linux hám Unix ta da isleydi hám ózi ornatılatuǵın binarlar jarata aladı), hám freeze (dáslepki). Bul qurallardı Pythonnan bólek alıwıńız kerek bolıwı múmkin, biraq olar biypul ashıq. Olar úziliksiz rawajlanıp atır, sonlıqtan bul qurallar haqqında tolıǵıraq maǵlıwmat alıw ushın http://www.python.org saytına yamasa ózińiz qálegen izlew sistemasına baylanısıń.
Bul sistemalardıń kólemi haqqında túsinik beriw ushın, py2exe tkinter, PMW, wxPython hám PyGTK GUI kitapxanaların qollanıwshı óz aldına baǵdarlamalardı; pygame oyın dúziw quralların qollanıwshı baǵdarlamalardı; win32com klient baǵdarlamaların hám basqalardı muzlata aladı.
Muzlatılǵan binarlar haqıyqıy kompilyatordıń shıǵısı menen birdey emes - olar bayt kodtı virtual mashina arqalı iske túsiredi. Sonlıqtan, múmkin bolǵan iske túsiw tezleniwin esapqa almaǵanda, muzlatılǵan binarlar dáslepki derek faylları menen birdey tezlikte isleydi.
Muzlatılǵan binarlar kishi emes (olarda PVM bar), biraq házirgi standartlar boyınsha olar ádettegiden tıs úlken de emes. Biraq, Python muzlatılǵan binarda jaylasqanlıǵı sebepli, siziń baǵdarlamanı iske túsiriw ushın onı alıwshı tárepte ornatıw shárt emes. Bunnan tısqarı, siziń kodıńız muzlatılǵan binarda jaylasqanlıǵı sebepli, ol alıwshılardan tábiyiy jasırın boladı.
Bul bir fayllı qaptaw sxeması ásirese kommerciyalıq baǵdarlama islep shıǵarıwshılar ushın júdá qızıqlı. Mısalı, tkinter quralları tiykarında Pythonda jazılǵan paydalanıwshı interfeysi baǵdarlaması atqarılıwshı fayl túrinde muzlatılıp, CD diskte yamasa internette óz-ózine jetkilikli baǵdarlama sıpatında jiberiliw múmkin. Aqırǵı paydalanıwshılarǵa jiberilgen baǵdarlamanı iske túsiriw ushın Pythondı ornatıw (hatteki ol haqqında biliw de) shárt emes.
Basqa orınlaw variantları
Python baǵdarlamalarıń iske túsiriwdiń basqa da sxemaları bar bolıp, olardıń maqsetleri anıǵıraq:
• Stackless Python sisteması - bul standart CPython ámelge asırıwınıń variantı bolıp, C tiliniń shaqırıw steginde halattı saqlap qalmaydı. Bul Pythondı kishi stek arxitekturalarına kóshiriwdi ańsatlastıradı, nátiyjeli kóp processorlı variantlardı usınadı hám korutinalar sıyaqlı jańa baǵdarlamalastırıw strukturaların qollap-quwatlaydı.
• Cython sisteması (Pyrex proektiniń jumısı tiykarında) - bul Python kodın C funkciyaların shaqırıw hám ózgeriwshiler, parametrler hám klass atributları ushın C tip deklaraciyaların qollanıw múmkinshiligi menen birlestirgen gibrid til. Cython kodı Python/C API dı qollanıwshı C kodına kompilyaciya etiliw múmkin, keyin tolıq kompilyaciya etiliwi múmkin. Standart Python menen tolıq úylesimli bolmasa da, Cython sırtqı C kitapxanaların ornatıp alıw hám Python ushın nátiyjeli C keńeytpelerin kodlaw ushın paydalı bolıwı múmkin.
Bul sistemalar haqqında tolıǵıraq maǵlıwmat alıw ushın, internetten jańa siltemelerdi izleń.
Keleshektegi múmkinshilikler?
Aqırında, bul jerde súwretlengen orınlaw waqtındaǵı atqarıw modeli Python tiliniń óziniń emes, al onıń házirgi ámelge asırılıwınıń nátiyjesі ekenin este tutıw kerek. Mısalı, bul kitaptıń qollanılıw múddeti ishinde Python derek kodın mashina kodına awdaratuǵın tolıq, dástúrli kompilyator payda bolıwı múmkin (biraq jigirma jılǵa jaqın waqıt dawamında bunday bolǵan joq!). Keleshekte jańa bayt kod formatları hám ámelge asırıw variantları da qabıl etiliw múmkin. Mısalı:
• Parrot proektiniń maqseti - hár qıylı baǵdarlamalastırıw tilleri ushın ulıwma bayt kod formatın, virtual mashinanı hám optimizaciya texnikasın usınıw (http://www.python.org saytına qarań). Pythonnıń óz PVM-i Python kodın Parrotqa qaraǵanda nátiyjeli túrde orınlaydı, biraq Parrottıń qalay rawajlanatuǵını ele belgisiz.
• PyPy proekti - bul jańa ámelge asırıw texnikasın qollaw ushın PVM-di Pythonnıń ózinde qayta ámelge asırıw háreketi. Onıń maqseti - Pythonnıń tez hám iykemlі ámelge asırılıwın jaratıw.
• Google támiyinlegen Unladen Swallow proektiniń maqseti - standart Pythondı kem degende 5 ese tezlestiriw hám kóp jaǵdaylarda C tilin almastıra alatuǵınday tez etiw. Bul CPythonnıń optimizaciya tarmaǵı bolıp, tolıq úylesimli hám ádewir tez bolıwı názerde tutılǵan. Bul proekt sonday-aq, haqıyqıy Python potokların waqıt boyınsha bir-birine qabatlastırıwǵa jol qoymaytuǵın Python kóp potoklı Global Interpretator Qulpın (GIL) alıp taslaw úmitin de bildiredi. Bul házirgi waqıtta Google injenerleri tárepinen ashıq derek retinde rawajlandırılıp atırǵan payda bolıp kiyatırǵan proekt; dáslepki náwbette Python 2.6 nusqasın obyekt etip alǵan, biraq 3.0 nusqası da onıń ózgerislerin óz ishine alıwı múmkin. Eń sońǵı maǵlıwmatlar ushın Google-dan izlew kerek.
Bunday keleshektegi ámelge asırıw sxemaları Pythonnıń orınlaw waqtındaǵı qurılısın bir qansha ózgertiwi múmkin bolsa da, bayt kod kompilyatorı ele uzaq waqıt dawamında standart bolıp qalatuǵını itimal. Bayt kodınıń kóshirmeligі hám orınlaw waqtındaǵı iykemliligi kóplegen Python sistemalarınıń áhmiyetli ózgeshelikleri bolıp tabıladı. Bunnan tısqarı, statikalıq kompilyaciyaǵa qollap-quwatlaw ushın tip sheklewleri deklaraciyaların qosıw Python kodın jazıwdıń iykemliligin, qısqalıǵın, ápiwayılıǵın hám ulıwma ruwxın buzǵan bolar edi. Pythonnıń júdá dinamikalıq tábiyatına baylanıslı, keleshektegi hár qanday ámelge asırıw házirgi PVM-niń kóplegen elementlerin saqlap qalıwı itimal.
Bap juwmaǵı
Bul bapta Pythonnıń orınlaw modeli (Python siziń baǵdarlamalarıńızdı qalay orınlaydı) tanıstırıldı hám bul modeldiń ayırım keń tarqalǵan variantları (waqtında kompilyaciya qılıwshılar hám basqalar) úyrenildi. Python skriptlerin jazıw ushın Python ishki qurılısın túsiniw shárt bolmasa da, bul baptıń temaları menen azǵana tanısıw sizge óz baǵdarlamalarıńızdıń qalay isleytuǵının tolıq túsiniwge járdem beredi. Keyingi bapta siz ózińizdiń kodıńızdı haqıyqattan da orınlap baslaysız. Biraq, dáslep, ádettegidey bap sorawları keledi.
Bilimińizdi tekseriń: Sorawlar
1. Python interpretatorı degen ne?
2. Derek kodı degen ne?
3. Bayt kodı degen ne?
4. PVM degen ne?
5. Pythonnıń standart orınlaw modeliniń eki variantın atań.
6. CPython, Jython hám IronPython qanday tárepleri menen parıq qıladı?
Bilimińizdi tekseriń: Juwaplar
1. Python interpretatorı - bul siz jazǵan Python baǵdarlamaların orınlaytuǵın baǵdarlama.
2. Derek kodı - bul siz baǵdarlamańız ushın jazǵan buyrıqlar. Ol ádette .py keńeytpesi menen tamamlanıwshı tekst fayllarındaǵı tekstten ibarat.
3. Bayt kodı - bul Python kompilyaciya qılǵannan keyingi baǵdarlamańızdıń tómengi dárejedegi forması. Python bayt kodın avtomatik túrde .pyc keńeytpeli fayllarǵa saqlaydı.
4. PVM - bul Python Virtual Machine (Python Virtual Mashinası) - kompilyaciya qılınǵan bayt kodıńızdı interpretaciya qılatuǵın Pythonnıń orınlaw dvigateli.
5. Psyco, Shedskin hám muzlatılǵan binarlar - bulardıń barlıǵı orınlaw modeliniń variantları.
6. CPython - tildiń standart ámelge asırılıwı. Jython hám IronPython Python baǵdarlamaların sáykes Java hám .NET ortalıqlarında paydalanıw ushın ámelge asıradı; olar Python ushın alternativ kompilyatorlar bolıp tabıladı.
Paydalanılǵan ádebiyat:
Learning Python, Fourth Edition by Mark Lutz CHAPTER 2
How Python Runs Programs