Python programmalastırıw tilin úyreniw 3-BÓLIM
.pdfC:\Python30> python script1.py win32 1267650600228229401496703205376
Spam!Spam!Spam!Spam!Spam!Spam!Spam!Spam!
Ádettegidey, eger PATH ortalıq ózgeriwshisine bul joldı kirgizbegen bolsańız yamasa bul jolǵa ótiw ushın katalogtı ózgertiw komandasın orınlamaǵan bolsańız, Pythonǵa tolıq joldı teriwdi umıtpań:
D:\temp> C:\python30\python script1.py win32
1267650600228229401496703205376
Spam!Spam!Spam!Spam!Spam!Spam!Spam!Spam!
Windowstıń barlıq jańa versiyalarında siz tek ǵana skriptińizdiń atın jazıp, Pythonnıń óziniń atın qaldırıp ketiwińizge boladı. Sebebi jańa Windows sistemaları fayldı orınlaw ushın programmanı tabıw ushın Windows Registrin paydalanǵanlıqtan, .py faylın iske qosıw ushın komanda qatarında "python" sózin anıq kórsetiw talap etilmeydi. Mısalı, aldınǵı komanda kópshilik Windows mashinalarında tómendegidey ápiwayılastırılıwı múmkin:
D:\temp> script1.py
Aqırında, eger skript faylıńız siz jumıs islep atırǵan papkadan basqa jerde jaylasqan bolsa, oǵan tolıq joldı kórsetiwdi umıtpań. Mısalı, D:\other papkasınan orınlanǵan tómendegi sistema komanda qatarı Pythonnıń sistemalıq jolda bar ekenin esapqa aladı, biraq basqa jerde jaylasqan fayldı iske qosadı:
D:\other> python c:\code\otherscript.py
Eger siziń PATH ózgeriwshińizde Python papkası joq bolsa hám Python da, skript faylıńız da siz jumıs islep atırǵan papkada bolmasa, ekewi ushın da tolıq joldı paydalanıń:
D:\other> C:\Python30\python c:\code\otherscript.py
Komanda qatarların hám faylların paydalanıw
Sistema komanda qatarlarınan programma faylların iske qosıw da ápiwayı iske túsiriw usılı bolıp tabıladı, ásirese eger siz aldınǵı jumıslarıńızdan komanda qatarları menen tanıs bolsańız. Biraq, jańa baslaǵanlar ushın, kóbirek qıyınshılıqtıń aldın alıwǵa járdem beriwi múmkin bolǵan ádettegi baslanǵısh qaqpanlar haqqında bir neshe kórsetpe:
• Windows ta avtomatik keńeytpelerden saq bolıń. Eger siz Windowsta programma faylların jazıw ushın Notepad programmasın qollansanız, faylıńızdı saqlaw
waqtında "Barlıq fayllar" tipin tańlaw hám faylǵa anıq .py qosımtasın beriw kerek. Bolmasa, Notepad faylıńızdı .txt keńeytpesi menen saqlap qoyadı (mısalı, script1.py.txt sıpatında), bunıń nátiyjesinde onı ayırım iske túsiriw usıllarında qollanıw qıyın boladı. Bunnan da jamanı, Windows ádette fayl keńeytpelerin jasırıp qoyadı, sonlıqtan kóriw parametrlerin ózgertpegen bolsańız, siz tekst faylın emes, al Python faylın jazıp atırǵanıńızdı bile almawıńız múmkin. Fayl belgisin (ikonkasın) qarap bilse boladı - eger onda jılan súwreti bolmasa, qıyınshılıq payda bolıwı múmkin. IDLE de reńsiz kod hám basqanda redaktorlanatuǵın, iske túspeytuǵın fayllar usı máseleniń basqa belgileri bolıp tabıladı. Microsoft Word ta usıǵan uqsas, ádette .doc keńeytpesin qosadı; bunnan da jamanı, ol Python sintaksisinde ruqsat etilmegen formatlastırıw simvolların qosadı. Ulıwma qaǵıyda sıpatında, Windowsta saqlaǵanda bárqulla "Barlıq fayllar" tipin tańlań yamasa IDLE sıyaqlı baǵdarlamashılarǵa qolaylıraq tekst redaktorın paydalanıń. IDLE hátte .py qosımtasın avtomatik túrde qospaydı - bul baǵdarlamashılarǵa unaydı, biraq paydalanıwshılarǵa unay bermeydi.
•Sistema sorawlarında fayl keńeytpeleri hám katalog jolların paydalanıń, biraq importlar ushın emes. Sistema buyrıq qatarlarında faylıńızdıń tolıq atın jazıwdı umıtpań - yaǵnıy, python script1 emes, al python script1.py dep jazıń. Buǵan qarama-qarsı, Pythonnıń import operatorları, olar menen biz usı bólimniń keyinirek bóliminde tanısamız, .py fayl qosımtasın da, katalog jolın da qospaydı (mısalı, import script1). Bul áhmiyetsiz bolıp kóriniwi múmkin, biraq usı ekewiniń arasın aljastırıw kóp ushırasatuǵın qáte. Sistema sorawında siz Pythonda emes, al sistema qabıǵındasız, sonlıqtan Python modul faylların izlew qaǵıydaları qollanılmaydı. Sonıń ushın siz .py keńeytpesin hám, kerek bolsa, iske túsirmekshi bolǵan faylıńızǵa alıp baratuǵın tolıq katalog jolın qosıwıńız kerek. Mısalı, siz jumıs islep atırǵan katalogtan basqa katalogta jaylasqan fayldı iske túsiriw ushın, siz onıń tolıq jolın kórsetiwińiz kerek (mısalı, python d:\tests\spam.py). Biraq, Python kodınıń ishinde siz tek import spam dep aytıp, faylıńızdı tabıw ushın Python modul izlew jolına súyene alasız, bul haqqında keyinirek aytıladı.
•Fayllarda print operatorların paydalanıń. Awa, biz bunı álleqashan talqılaǵan edik, biraq bul sonshelli kóp ushırasatuǵın qáte, onı usı jerde bir ret qaytalaǵan paydalı. Interaktiv kodlawdan parıqlı, programma fayllarınan shıǵısın kóriw ushın siz, ádette, print operatorların paydalanıwıńız kerek. Eger hesh qanday shıǵıs kórmeseniz, faylıńızda "print" jazǵanıńızǵa isenimli bolıń. Biraq taǵı da, print operatorları interaktiv sessiyada talap etilmeydi, sebebi Python avtomatik túrde ańlatpa nátiyjelerin kórsetedi; bul jerde print ler zıyan keltirmeydi, biraq artıqsha teriwdi talap etedi.
Unix Orınlanıwshı Skriptler (#!)
Eger siz Pythondı Unix, Linux yamasa Unix sıyaqlı sistemada qollanbaqshı bolsańız, Python kodı bar fayllardı orınlanıwshı programmalarǵa aylandıra alasız, dál csh yamasa ksh sıyaqlı qabıq tillerinde kodlanǵan programmalardı islegenińizdey. Bunday fayllar ádette orınlanıwshı skriptler dep ataladı. Ápiwayı etip aytqanda, Unix stilindegi orınlanıwshı skriptler - bul Python operatorların óz ishinde saqlaytuǵın ádettegi tekst faylları, biraq eki ayırıqsha qásiyeti bar:
•Olardıń birinshi qatarı ayırıqsha. Skriptler ádette #! belgileri menen baslanadı (kóbinese "hash bang" dep ataladı), onnan keyin siziń kompyuterińizdegi Python interpretatorına jolı jazıladı.
•Olar ádette orınlanıw huqıqlarına iye boladı. Skript faylları ádette operaciyalıq sistemaǵa olardı joqarı dárejeli programma sıpatında iske túsiriw múmkinligin bildiriw ushın orınlanıwshı etip belgilenedi. Unix sistemalarında chmod +x file.py sıyaqlı buyrıq ádette bunı ámelge asıradı.
Kelinler, Unix sıyaqlı sistemalar ushın bir mısal kóreyik. Tekst redaktorınızdı qollanıp, brian dep atalatuǵın Python kodı bar fayl jaratın:
#!/usr/local/bin/python
print(The Bright Side + of Life...) # + qatarlar ushın birlestiriw belgisi
Fayldıń joqarǵı bólimindegi ayırıqsha qatar sistemaǵa Python interpretatorınıń qay jerde jaylasqanın bildiredi. Texnikalıq jaqtan, birinshi qatar - bul Python kommentariyası. Aldın aytılǵanday, Python programmasındaǵı barlıq kommentariylar # belgisi menen baslanadı hám qatardıń aqırına deyin dawam etedi; olar kodıńızdı oqıytuǵın adamlar ushın qosımsha maǵlıwmat kirgiziwge arnalǵan orın. Biraq usı fayldaǵı birinshi qatardaǵıday kommentariy payda bolǵanda, ol ayırıqsha boladı, sebebi operaciyalıq sistema onı fayldıń qalǵan bólimindegi programma kodın orınlaw ushın interpretator tabıwda qollanadı.
Sonday-aq, bul fayldıń atı ápiwayi brian dep ataladı, aldınǵı modul faylı ushın qollanılǵan .py qosımtasısız ekenin esletip ótemiz. Atına .py qosıw zıyan keltirmeydi (hám bul Python programma faylı ekenin esińizde saqlawǵa járdem beriwi múmkin), biraq siz basqa modullerdiń usı fayldaǵı kodtı import etiwin jobalastırmaǵanlıqtan, fayldıń atı áhmiyetsiz.
Eger siz chmod +x brian qabıq buyırıǵı menen fayl ushın orınlanıw huqıqların berseńiz, onı operaciyalıq sistema qabıǵınan binarlıq programma sıyaqlı iske túsire alasız:
% brian
The Bright Side of Life...
Windows paydalanıwshıları ushın eskertiw: bul jerde táriyiplengen usıl - bul Unix hiylesi hám siziń platformańızda islemewin múmkin. Alańlamań; tek aldın úyrenilgen tiykarǵı komanda qatarı usılın qollanıń. Fayldıń atın anıq python komanda qatarında kórsetiń:*
C:\misc> python brian
The Bright Side of Life...
Bul jaǵdayda, siz joqarıda ayırıqsha #! kommentariyasın qoyıwıńız shárt emes (eger ol bar bolsa da, Python onı ele áhmiyetke almaydı), hám faylǵa orınlanıw huqıqların beriw de talap etilmeydi.
Shınında da, eger siz fayllarıńızdı Unix hám Microsoft Windows arasında kóshirmeli túrde iske túsiriwdi qáleseńiz, programmalardı iske qosıw ushın Unix stilindegi skriptlerdi emes, al barlıq waqıtta tiykarǵı komanda qatarı usılın qollanıw siziń turmısıńızdı ápiwayılastıradı.
Unix env izlew hiylesi
Bazı Unix sistemalarında, Python interpretatorına jol kórsetiwdi qatań kodlastırıwdan qashıw ushın, ayırıqsha birinshi qatar kommentariyasın bılay jazıwıńız múmkin:
#!/usr/bin/env python
...skript usı jerde jazıladı...
Usılay kodlanǵanda, env programması Python interpretatorın siziń sistema izlew jolı sazlawlarıńızǵa sáykes tabadı (yaǵnıy, kópshilik Unix qabıqlarında PATH ortalıq ózgeriwshisinde dizimlengen barlıq kataloglardı tekserip shıǵadı).
Bul sxema kóbirek kóshirmeli bolıwı múmkin, sebebi sizge barlıq skriptlerińizdiń birinshi qatarında Python ornatıw jolın qatań kodlastırıwdıń keregi joq. Eger sizde hámme jerde env-ge kirisiw múmkinshiligi bolsa, skriptlerińiz Python sistemańızda qay jerde jaylasqanına qaramastan isleydi - sizge tek platformalar arasında PATH ortalıq ózgeriwshisiniń sazlawların ózgertiwińiz kerek boladı, barlıq skriptlerińizdiń birinshi qatarın emes.
Álbette, bul env hámme jerde birdey jerde jaylasqan dep boljaydı (bazı kompyuterlerde ol /sbin, /bin yamasa basqa jerde bolıwı múmkin); eger bunday bolmasa, kóshirmeliginiń barlıq imkaniyatları joǵaladı!
Fayl belgilerin basıw
Windowsta Registr fayllardı belgi basıw arqalı ashıwdı ańsat etedi. Python avtomatik túrde ózin Python baǵdarlama faylların ashıwshı programma sıpatında dizimge aladı. Sonıń ushın, jazǵan Python baǵdarlamarıńızdı tek tıshqan kursorı menen olardıń fayl belgilerin basıw (yamasa eki ret basıw) arqalı iske qosıw múmkin.
Windows bolmaǵan sistemalarda da usıǵan uqsas ámeldi orınlaw múmkinshiligiń boladı, biraq belgiler, fayl izertlewshi, navigaciya sxemaları hám basqalar azǵana parıq etiwi múmkin. Mısalı, bazı Unix sistemalarında .py keńeytpesin fayl izertlewshi GUI menen dizimge alıwıńız, aldıńǵı bólimde talqılanǵan #! hiylesi járdeminde skriptińizdi orınlanıwǵa uqıplı etiwińiz, yamasa fayl MIME túrin qollanba yamasa buyrıq penen baylanıstırıw ushın fayllarǵa ózgeris kiritiwińiz, programmalardı ornatıwıńız yamasa basqa qurallardan paydalanıwıńız kerek bolıwı múmkin. Eger basıwlar dárhal durıs islemese, qosımsha maǵlıwmat ushın fayl izertlewshińizdiń qollanbasın qarań.
Windowsta belgilerin basıw
Túsindiriw ushın, aldın jazǵan script1.py skriptimizdi qollanıwdı dawam etemiz. Bet awdarıwdı azaytıw ushın, ol usı jerde qaytalanadı:
# Birinshi Python skripti
import sys # Kitapxana modulin júklew print(sys.platform)
print(2 ** 100) # 2 ni dárejege kóteriw x = Spam!
print(x * 8) # Qatardı qaytaraw
Kórgenimizdey, bul fayldı bárqulla sistema buyrıq qatarınan iske qosıwǵa boladı:
C:\misc> c:\python30\python script1.py win32
1267650600228229401496703205376
Biraq, belgi basıwlar sizge fayldı hesh qanday teriw talap etilmesten iske qosıw imkaniyatın beredi. Eger siz bul fayldıń belgisin tapsańız - mısalı, Start menyusında Computer (yamasa XPde My Computer) di tańlap, Windowstaǵı C diskinde tómenge qaray júrseńiz - 3-1 súwrette kórsetilgen fayl izertlewshi kórinisine erisesiz (bul jerde Windows Vista qollanılǵan). Windowsta Python derek kod faylları aq fon menen, bayt-kod faylları qara fon menen kórinedi. Ádette, eń sońǵı ózgerislerińizdi alıw ushın derek kod faylın basıwdı (yamasa basqa jol menen iske qosıwdı) qáleysiz. Bul jerde fayldı iske qosıw ushın, tek script1.py faylınıń belgisin basıń.
3-1 súwret. Windowsta Python baǵdarlama faylları fayl izertlewshi aynalarında belgi túrinde kórinedi hám tıshqannıń eki ret basıwı menen avtomatik túrde iske qosıla aladı (biraq bul jol menen baspa shıǵısın yamasa qáte xabarların kórmewińiz múmkin).
Kirgiziw hiylesi
Ókinishlisi, Windowsta fayl belgisin basıwdıń nátiyjesi onsha qanaatlandırarlı bolmawı múmkin. Haqıyqatında, bul mısal skripti basılǵanda túsinilmeytuǵın "jaltıldı" payda etedi - bul Python programmaların jaratıwshılar úmit etetuǵın keri baylanıs túri emes! Bul qáte emes, biraq Windows nusqasındaǵı Pythonnıń baspa shıǵısın qanday qılıp basqarıwına baylanıslı. Ádette, Python basılǵan fayldıń kirgiziw hám shıǵarıwı ushın qara DOS konsol aynasın payda etedi. Eger skript tek basıp shıǵarsa hám juwmaqlasa, onıń tek basıp shıǵarıp juwmaqlaydı - konsol aynası payda boladı, tekst sol jerge basıp shıǵarıladı, biraq baǵdarlama juwmaqlanǵanda konsol aynası jabıladı hám joq boladı. Eger siz júdá tez bolmasańız yamasa kompyuterińiz júdá áste bolmasa, shıǵısıńızdı hesh kóre almaysız. Bul normal jumıs tártibi bolsa da, bul siz oylaǵan nárse emes shıǵar.
Quwanıshlısı, bunı sheshiw ańsat. Eger skriptińizdiń shıǵısın belgi basıw arqalı iske qosqanıńızda saqlanıp qalıwın qáleseńiz, tek skripttiń eń aqırına ornatılǵan input funkciyasına shaqırıw qosıń (2.6 versiyasında raw_input: aldaǵı eskertiw kóriń). Mısalı:
# Birinshi Python skripti
import sys # Kitapxana modulin júklew print(sys.platform)
print(2 ** 100) # 2 ni dárejege kóteriw x = Spam!
print(x * 8) # Qatardı qaytaraw input() # <== QOSÍLǴAN
Ulıwma alǵanda, input standart kirgiziw dereginiń kelesi qatarın oqıydı, eger ele qoljetimli bolmasa kútedi. Bul kontekstte ulıwma tásir skriptti toqtatıw boladı, sonıń menen 3-2 súwrette kórsetilgen shıǵıs aynasın siz Enter túymesin basqansha ashıq saqlaydı.
3-2 súwret. Windowsta baǵdarlama belgisin basqanıńızda, eger skripttiń eń aqırına input shaqırıwın qossańız, onıń basıp shıǵarılǵan nátiyjesin kóre alasız. Biraq bunı tek usı jaǵdayda ǵana islewińiz kerek!
Endi men sizge bul hiyleni kórsetkenim menen, esińizde bolsın, bul ádette tek Windows ushın talap etiledi, sonda da tek skriptińiz tekst basıp shıǵarıp, juwmaqlanǵanda hám tek skriptti fayl belgisine basıw arqalı iske qosqanıńızda ǵana kerek boladı. Siz bul shaqırıwdı joqarı dárejeli fayllarıńızdıń tómenine tek usı úsh shárt birge orınlanǵanda ǵana qosıwıńız kerek. Basqa jaǵdaylarda bunı qosıwdıń hesh qanday sebepleri joq (tek kompyuterińizdiń Enter túymesin basıwdı júdá jaqsı kórmeseńiz!). Bul anıq bolıp kóriniwi múmkin, biraq bul tikkeley klasslarda jiyi ushırasatuǵın qátelik. Aldıǵa ótiwden aldın, bul jerde qollanılǵan input shaqırıwı shıǵıs ushın print operatorın qollanıwdıń kirgiziw ekvivalenti ekenin eskertiń. Bul paydalanıwshı kirgiziwlerin oqıwdıń eń ápiwayı usılı hám bul mısal kórsetkennen de kóbirek ulıwma xarakterge iye. Mısalı, input:
•Qálegen jaǵdayda prompt retinde basıp shıǵarılatuǵın qatardı qabıl etedi (mısalı, input(Shıǵıw ushın Enter basıń))
•Siziń skriptińizge qatar retinde oqılǵan tekst qatarın qaytaradı (mısalı, nextinput = input())
•Sistema qabıǵı dárejesinde kirgiziw aǵımın qayta baǵıtlawdı qollaydı (mısalı, python spam.py < input.txt), dál print operatorı shıǵıs ushın isleytuǵınday
Biz input tı bul tekstte keyinirek quramalıraq usıllarda qollanamız; mısalı, 10-bap onı interaktiv ciklde qollanadı.
Versiya ayırmashılıǵı haqqında eskertiw: Eger siz Python 2.6 yamasa onnan erterek versiyada isleseńiz, bul kodta input() ornına raw_input() qollanıń. Birinshisi Python 3.0 de ekinshisine qayta ataldı. Texnikalıq jaqtan, 2.6 da input
bar, biraq ol qatarlardı skriptke jazılǵan programma kodı sıyaqlı bahalaydı, sonlıqtan bul kontekstte islemeydi (bos qatar qátelik boladı). Python 3.0 diń input i (hám 2.6 nıń raw_input i) tek kirgizilgen tekstti qatar retinde, bahalamastan qaytaradı. 3.0 da 2.6 nıń input in simulyaciya qılıw ushın, eval(input()) qollanıń.
Basqa belgi basıw sheklewleri
Input hiylesi menen de, fayl belgilerin basıw qáwipsiz emes. Siz Python qátelik xabarların kóre almawıńız múmkin. Eger skriptińiz qátelik payda etse, qátelik xabar teksti pop-up konsol aynasına jazıladı - ol bolsa dárriw joq boladı! Bunnan da jamanı, faylıńızǵa input shaqırıwın qosıw bul ret járdem bermeydi, sebebi skriptińiz bul shaqırıwǵa jetpesten aldın toqtap qalıwı múmkin. Basqasha aytqanda, neniń nadurıs ketkenin bilip almaysız.
Usı sheklewler sebepli, belgi basıwlardı programmalardı olardı sazlaǵannan keyin yamasa shıǵısların faylǵa jazıw ushın úskenelegennen keyin iske qosıw usılı retinde qaraw jaqsıraq. Ásirese, baslaǵanda, basqa usıllardı qollanıń - mısalı, sistema buyrıq qatarların hám IDLE di (58-bettegi "IDLE paydalanıwshı interfeysi" bóliminde tolıǵıraq talqılanadı) - solay etip, siz payda bolǵan qátelik xabarların kóre alasız hám kodlaw hiylelerine ámel etpesten normal shıǵısıńızdı kóre alasız. Biz bul kitapta keyinirek ózgesheliklerdi talqılaǵanımızda, qáteliklerdi uslap alıw hám olardan qutılıwdıń múmkin ekenin de úyrenesiz, solay etip olar siziń programmalarıńızdı toqtatpaydı. Konsol aynasın qátelikler júz bergende jabılıwdan saqlaw ushın basqa bir usıl retinde bul kitaptıń keyingi bólimlerinde try operatorın talqılawdı kútiń.
Modul importları hám qayta júklewler
Usı waqıtqa shekem men "modullerdi import etiw" haqqında bul terminniń mánisin tolıq túsindirmey sóylep keldim. Biz modullerdi hám úlken programma arxitekturasın V-bólimde tereńirek úyrenemiz, biraq importlar programmalardı iske qosıwdıń bir usılı bolǵanlıqtan, bul bólim sizdi baslaw ushın jetkilikli modul tiykarların tanıstıradı.
Ápiwayı sózler menen aytqanda, atı .py keńeytpesi menen tamamlanatuǵın Python derek kodınıń hár bir faylı - bul modul. Basqa fayllar sol moduldi import etiw arqalı onıń anıqlaǵan elementlerine kiriwi múmkin; import operaciyaları tiykarınan basqa bir fayldı júkleydi hám sol fayldıń mazmunına kiriwge ruqsat beredi. Moduldiń mazmunı sırtqı dúnyaǵa onıń atributları arqalı jetkiliziledi (bul terminniń anıqlamasın keyingi bólimde berejaqpan). Modulge tiykarlanǵan bul xızmetler modeli Python daǵı programma arxitekturasınıń tiykarǵı ideyası bolıp shıǵadı. Úlken programmalar kóbinese kóp modul faylları túrinde boladı, olar úskenelerdi basqa modul fayllarınan import etedi. Modullardıń biri tiykarǵı yamasa joqarı dárejeli fayl retinde belgilenedi hám pútkil programmanı baslawda usı fayl iske
qosıladı. Biz bul kitaptıń keyingi bólimlerinde bunday arxitekturalıq máselelerdi tolıǵıraq úyrenemiz.
Bul bap tiykarınan import operaciyalarınıń júklenip atırǵan fayldaǵı kodtı aqırǵı adım retinde orınlaytuǵın faktine qızıǵadı. Usıǵan baylanıslı, fayldı import etiw - onı iske qosıwdıń taǵı bir usılı. Mısalı, eger siz interaktiv sessiya baslasańız (sistema buyrıq qatarınan, Baslawdan, IDLE den yamasa basqa jol menen), siz aldın jaratqan script1.py faylın ápiwayı import penen orınlata alasız (aldıńǵı bólimde qosqan input qatarın óshiriwdi umıtpań, bolmasa sebepsiz Enter basıwıńızǵa tuwra keledi):
C:\misc> c:\python30\python
>>> import script1 win32
1267650600228229401496703205376
Spam!Spam!Spam!Spam!Spam!Spam!Spam!Spam!
Bul isleydi, biraq ádepki boyınsha hár sessiya (shınında da, process) ushın tek bir ret isleydi. Birinshi importtan keyin, keyingi importlar hesh nárse islemeydi, hátte eger siz moduldiń derek faylın basqa aynada ózgertip saqlaǵan bolsańız da:
>>>import script1
>>>import script1
Bul jobalastırılǵan; importlar hár fayl ushın, hár programma júrgizilgende (orınlaǵanda) bir retten artıq qaytalaw ushın júdá qımbat operaciya. 21-bapta úyrengenińizdey, importlar fayllardı tabıwı, olardı bayt kodına kompilaciya etiwi hám kodtı orınlawı kerek. Eger siz Pythondı sessiyanı toqtatpay hám qayta baslamay, sol sessiyada fayldı qaytadan júrgiziwge máljbúrlew kerek bolsa, siz imp standart kitapxana modulinde bar bolǵan reload funkciyasın shaqırıwıńız kerek (bul funkciya Python 2.6 da ápiwayı built-in funkciya, biraq 3.0 da bunday emes):
>>>from imp import reload # 3.0 da modulden júklew kerek
>>>reload(script1)
win32
65536
Spam!Spam!Spam!Spam!Spam!Spam!Spam!Spam!
>>>
Bul jerde from operatorı tek modulden atın kóshirip aladı (bul haqqında tez arada kóbirek aytamız). reload funkciyası ózińizdiń fayl kodıńızdıń házirgi versiyasın júkleydi hám orınlaydı, eger siz onı basqa aynada ózgertip saqlaǵan bolsańız, ózgerislerdi qabıl etedi. Bul sizge házirgi Python interaktiv sessiyası ishinde jańa kodtı redaktorlaw hám qabıl etiw imkaniyatın beredi. Mısalı, bul sessiyada
script1.py daǵı ekinshi print operatorı birinshi import hám reload shaqırıwı arasında basqa aynada 2 ** 16 shıǵarıw ushın ózgertilgen edi.
reload funkciyası aldın júklengen modul obyektiniń atın kútedi, sonlıqtan siz moduldi qayta júklew aldınan onı bir ret tabıslı import qılıwıńız kerek. Dıqqat awdarıń, reload de modul obyektiniń atı átirapında qawsırma talap etedi, al import bunday emes. reload - bul shaqırılatuǵın funkciya, al import - bul operator. Sonıń ushın siz modul atın reload ǵa qawsırma ishinde argument sıpatında beriwińiz kerek, hám sonıń ushın qayta júklew waqtında qosımsha shıǵıs qatarın alasız. Sońǵı shıǵıs qatarı - bul tek reload shaqırıwınıń qaytarıw mánisiniń kórsetiliwi, yaǵnıy Python modul obyekti. Funkciyalardı ulıwma qollanıw haqqında 16-bapta kóbirek úyrenemiz.
Versiya ózgerisi eskertiw: Python 3.0 reload built-in funkciyasın imp standart kitapxana moduline kóshirdi. Ol ele de burınǵıday fayllardı qayta júkleydi, biraq onı qollanıw ushın siz onı import qılıwıńız kerek. 3.0 da, import imp orınlap, imp.reload(M) qollanıń, yamasa from imp import reload orınlap, bul jerde kórsetilgendey reload(M) qollanıń. Biz import hám from operatorların keyingi bólimde, hám bul kitaptıń keyingi bólimlerinde tereńirek talqılaymız.
Eger siz Python 2.6 da (yamasa ulıwma 2.X da) jumıs islep atırǵan bolsańız, reload built-in funkciya sıpatında jetkilikli, sonlıqtan hesh qanday import talap etilmeydi. Python 2.6 da reload eki túrde de bar - built-in hám modul funkciyası - bul 3.0 ǵa ótiw ushın járdem beredi.
Basqasha aytqanda, qayta júklew ele de 3.0 da bar, biraq reload shaqırıwın alıw ushın qosımsha kod qatarı kerek. 3.0 daǵı bul ózgeris, múmkin, keyingi bólimde ushırasatuǵın reload hám from operatorlarına baylanıslı ayırım belgili máseleler sebepli motivlengen bolıwı múmkin. Qısqasha aytqanda, from menen júklengen atlar reload arqalı tikkeley jańalanbaydı, biraq import operatorı menen kirgiziletuǵın atlar jańalanadı. Eger reload dan keyin siziń atlarıńız ózgermegen bolıp kórinse, import hám module.attribute at silteme usılın qollanıp kóriń.
Úlken modul áńgimesi: Atributlar
Import hám reload operaciyaları programmanı iske túsiriw ushın tábiyiy variant bolıp esaplanadı, sebebi import operaciyaları fayllardı aqırǵı basqıshta orınlaydı. Biraq, keńirek kóz-qarastan qaraǵanda, moduller úskenelerdiń kitapxanası xızmetin atqaradı, bul haqqında siz V-bólimde úyrenesiz.
Ulıwma alǵanda, modul kóbinese tek ǵana ózgeriwshi atlar toplamı bolıp, ol namespace dep ataladı. Bul toplamdaǵı atlar atributlar dep ataladı - atribut belgili bir obyektke (mısalı, modulge) biriktirilgen ózgeriwshi atı bolıp tabıladı.
