Python 3

You might also like

Download as pdf
Download as pdf
You are on page 1of 531
Mark Surmmertietd Python 3 programozas feascare) Python 3 programozas Atfog6 bevezetés a Python nyelvbe coal fa Le = el eae ip d Hungarian edition © 2009 Kiskapu Kft. ved, No part of this book, including interior design, cover design, and i icons, may t d or transmitted in any form, by any means (electronic, photocopying, recording, or Dn without the prior written permission of the Sete that it is using Hehe names for editorial purposes only and to the benefit of the trademark owner, h no intention of infringing upon that trademark. tds Bs iorras valtozat © 2009 Kiskapu Kft. Minden jog fenntartva! nyv egyetlen része sem sokszorosithat6 semmilyen médszerrel a Kiad6 elézetes irasos engedélye . Ez a korlatozas kiterjed a bels6 tervezésre, a borit6ra és az ikonokra is. A konyvben bejegyzett yek € és markanevek i is felbukkanhatnak. Abelyett, hogy ezt minden egyes helyen kulén jeleznenk, lok: ra, szenitien, a név tulajdonosanak érdekeit szem eldtt tartva hasznalja, és nem all szandekaban az kkal kapcsolatos jogokat megszegni, vagy kétségbe vonni. erzok és a kiad6 a lehet6 legnagyobb kériiltekintéssel jart el e kiadvany elkészitésekor. Sem a szerz6, a kiad6 nem vAllal semmineméd felelésséget vagy garanciat a koényv tartalmaval, teljessé¢gével esolatban. Sem a szerz6, sem a kiad6 nem vonhato feleldsségre barmilyen baleset vagy karesemeny “ Mmiatt, mely kozvetve vagy kézvetlentil kapcsolatba hozhaté e kiadvannyal. = 7 4 ati a an Me - Wercuelire ‘ ce Km Bs veel Vr Thi ae ee | i "5 et nie a : zet © Gyors bevezetés az elj4raskézpontd programozdsba Pa oeiinok irasa es futtatasa aay.acariiok. aed owt ae. ae 2 1. kulcsdésszetevo: NGAP US@ Kes. 2 av-4 ae vk wie Ae oe ee 7 A Python MER OTAMOROUSTIVO oo cain 8 6h 41a ala oe ale as oe ee 7 mem mtilesOsszetevo: Objektumhivatkozasok .......0.0..0.0. d00 Se See 9 paicsosszctevo: Gyujtemenyes adattipusok ......;.)02.e Soe 12 plieswas7ctevo: Logikai miiveletek..... s2.9c0.8 Ve ee 15 Pemiiesosszetevo: Vezerl6 utasitasok . 00. le ee ee sw ae 19 6 kulesosszetevo: Szamtani miiveletek ...........000.00 0 eb 24 F keulesOsszetevO: Bemenet és kimenet .... 0.0.00 .060. ce eee be 28 8. kulcsdsszetev6: Fuggvények meghatarozasa és meghivasa.......... 31 _ iad Pee be Hg RR EA sc ak on ner el 33 eal BIEN) sass doarrcn tone vin how ted wicolg aye ea oy eee pice Fel a Dhara) eles ing eae ei ate Te Ram BW a me ToS ey 1S) EN PRET” fp eT) dig ERE oe eee . . SPR Cen See Came Wem gs Gate of Hb Wie MCR eae | OER Re AS eae Re gars WN Eee) i cc upeea wee yeaa ini ulcss y a JAK } a RU BE EPA ay ay faa = - ‘a ; dive Cae = a 7 ir os a >t k B ) ae . ie ie 2 — 7 eee age eri gerwpebe BP aoe See A oF 4) ON La ee pe Se ver Genoa nt oS ’ ee tiie etn ree : ree pala aie skates o4 hin ce VF -1ia we * 4 es a aan A woe Se a iat 5 + bear 1 : oe I i 1 = sein s > pa oli. ‘ 1 i df 4 ee = eee eee ’ ie han de I ate telése és egyelése ..... re — ae anc-r aback 6 és etraneente a 5 fe £ oF 6 cE . oo. Karak erlancok formazasa az str.formatQ tagfiigevé reida Bee unicode. py quadratic.py csv2html.py Osszefoglalas Gyakorlatok 3. fejezet ° Gylijteményes adattipusok Sorozattipusok Rendezett sorozatok Nevesitett rendezett sorozatok Listak Halmaztipusok ETAMAZOW cin ee eee wee CLO OI RTT oe | Halmazértelmezések Fagyasztott halmazok Megfeleltetési tipusok Szotarak Alapértelmez6 szotarak GyGjtemények bejarasa és masolasa Gyiijtemények masolasa Példak "ena l usernames.py seu ates. oy ike oy au —T Th a Foe ey . be i oe . PS Tee AY A ee? Brent © ie ee 5 SR tes ain a | | ia oe a ee =a a a Oe ee Se Se a oe ee ee ae lene! ab a RR $ vg ae - ee efi I : er et : ’ on. KIVaT r -Nevek é dokumentéciés bearaistenlancole. thi. 7ab ah eee : — oh | Rote 172 = i Paraméterek €s paraméterértékek kicsomagola4sa ....../.........-- A lis: 2 | ve Globalis hatok6rd valtoz6k elérése . 0.0. eee 176 : BRNO RISO VETO ee ee eee ee nhs UWUE Meee 178 i, ee 180 i ee Példa: Pomme SKCICION. PY... ee eet eeu oy ee Pee 181 | EE I ge De ce va ov envawaly doa eae 187 EE ENA hake hee ei vv ene ct oa er: Jee 188 . fejezet * Modulok RS BCSOIIAC OK Gach ce ee ee BURA See ee eee vert 192 MOET Wile tinias ¢ boacnard: rps apa ac esas ee Olea eee ee 196 ON ee es te iene ee eer ee eae Si 198 | Been Micoedul. (eidoieiccd Mocomild wee 198 ; a PT eek iGOCil, 146, GSR ee ee RR een Ge I Si 203 Seen A Python alapkonyvtaranak Attekintése ......... 6. 06s eee ee 209 Sete eternal: KEZEIESE «cia sic av os ee LD PO Le Se ee 209 ee PeAplessOr! PTOSTAMIOZAS he ee ee ee ee ET a 210 WeernadienlesS74mdk fi ee ewe I OS ee 212 Paeumiok Esid6pontok 2.6. ee Ce 212 - Algoritmusok és gytijteményes adattipusok ......... 6056s seen 213 oan kédolasok és az adatok megGrzése .... 1.0... eee ats eae Fajlok, k¢ aye ? uataks¢ és eine MeZsIBEe ree 218 Ride a ok eal woe Te eae) (Oe ea ee ee a oe 7 aoe ee oho fe EG, Bee ew eee se eo € Ff wee eo =a Pe oi = 7 5 [ al i ay au , 4 tis) ~ a Fs Fy gr eee: eo aa cae “Jellema6k 6s tagfigevények 0.0... sss osscsveeeeenenn a Othe eas 315 a Be i eee ce en el 315 a DOM (Document Object Model) ...... 6.01. e eee eee ee wane seo 3D a. Prieta Messasajatkezileg 0... 1... 00+. Cee ea 322 | a XML-fajlok feldolgoz4sa a SAX segitségével .... 6.5.0 +5000: usa nedle 320 7 oe Wee elerced bindtis fajlok ...... 2.0.64 hota ons NS Sei il 326 i ane altalanos BinaryRecordFile osztaly - Példa Se eerie modul osztalyai ....... : an eee S '@ je) Fo 8 cee BOR sf © 6 28 en een nT ait, he oe 8 we 8 ee lel elle Ue Oe Se 6 oo 8 oe 8 oe Uf lLwlUlmhUmlUlU Le Ol elle Seis Me: Nd lies" fy? bY bl | tee Zep: SRM ea Cacia velco am Spat tay = a I, See San ae eo owe (90% 8 fe ow 8 fe wm Ue lat oe se ee ee em UR 8 ee ee eee ee eae oe eee Oe lo CU ; me ee eee i : ae —— De erctkerciok ON as hannah) a gdas “ai an sive. iaclan sac eueenn nt ee ie moe sige lee cee n vlna pens ance) ae S19 Ds erdlyszintt Pep eaeA MON te i ctlal a xiel Sales Yavalss tases Alay ne be! xt alee ee 384 MMMMIEADOSTIAIVOR 66... ee we ee ew weed wea towel 387 Me NOTOWICS So ee Vb ak ee Ve pews vow eau ole we) eel 395 see se ee aula en 397 Meee iV OZPON(U PIOLTAMOZAS 2... ee ee eve eee eee 402 eee ea mieovenyek alkalmazasa 0/4... ele ba ewe wee ey 405 Sete ree eee et 6 eee ee ee bes eR me og) Pe ee tee el oe eter 8 Geeta, oe Saye 6) a eee Ces eae ie) ee ee (ee le ee eee ea ee ae ee ee ee ee ee) eh ig a) a te el! rk ee cei tae ee a at) ee Wow Pee ee eco eee ce ee ey fee em eR Be be ee eee 8) ee ke eee Fela fatok Be erctiattie szalakkal 4 | ie Pelda: Mamiozalt S70 Neves PTOSTAM \. ibs ctw cba wa + ea eB OT cc fee fief fF ie te on FF hao eee er 2h Ula le ee ll OR lhe Oe UhhlUme Ee Oe ee Oe *. . #8 * . ’ . . . . * . ' * . ‘ . . . a . . » e ¢ * ' . . . '_ £# @ 48 * * « «4 . Sy tébbszor eldforduld fajlokat keres6 program tébbszalu valtozata 423 a =a ne mes aS on a ite = ES ka Ps: = i phi i te: == — ’ — a ed | . i et “he ‘i . 7 re a L pie at i -# 7 sta e roe aeee 7 at fe ah : arg ae z a ra | i : = soe @ Poa kes ceva et 8) Ker Se oP Mra lie lee eat eee a x ates eh an et Wa ag id ‘ Pa — _ A, Be al _ peor ) ei int * i € Wee ee ee eee a a eae ee Ee ee ee el ‘tw a. =a ST Sv) te aS = bee oe Ay a 49 MaziSOl .... ee ee eae gee MMT ISOS coc een ee ee ee ed ee ease aoe ss 2 te ne 454 ve wr eee eee 461 PL SC 462 | F 12. fejezet * Szabdlyos kifejezések ; Peyinomszabalyoskifejezés-nyelve .. i ee 464 : Morikterek €s karakterosztalyok ... 0... ee ee ee 464 eA CVZO ois eee i ee eaten a wi nla oa ee aa Csoportositas és elfogas ... cla dha x #4 gk On ele Pee telezesele 6S jElZOK i ee eae oe ee ee A Python szabalyoskifejezés-modulja .. 0... 6.6 cee eee eee eee Ah ak vise we ae kas ees ced Ue Rea iS er ee ee 5 te. na = a — ia ig i i~ — fi : a _ _ nee re F 8 8 8 8 oe ee Ay > 0 ablak létrehozdsa wet Tee. a pie ’ | ~ at ete pe A Ce : 4 ’ et i = - = _e eal _ ’ e 2 Pero Gi sore oaineraladcties) yi bo Radke. | ae at 7 as oat 7 _ - ; wa 3 ’ ’ rs F ia 7H Ls elas OA Ah nals vsr’ 3 ‘ , @ on am n= { On Ae i: ra. ua, azt jelenti, hogy példaul a C++ vagy a Java nyelvvel szemben 4ltalaban sokkal vesebb Python-k6odsor sztikséges ugyanannak az alkalmazasnak a megirasahoz. masolasaval, a ,felépités” vagy leforditas sziikségessége nélktil. Lehet olyan Python- gramokat is irni, amelyek rendszerfiigg6 szolgaltatasokra tamaszkodnak, de erre ritkan van sziikség, mivel a hattérben a Pythonnak alapkényvtaranak majdnem az egésze, illetve a kilsé programk6nyvtaraknak a nagy resze teljes mértékben rendszerfiggetlen. A Python egyik nagy erdssége, hogy az alapkonyvtara igen atfog6. Lehet6vé teszi példaul fajlok letéltését az Internetrél, tomoritett archiv fajlok kibontasat, vagy eppen webkiszolgdlo létrehozasat — csupan egyetlen vagy nehany kédsor segitségével. alapkonyvtar mellett kils6 konyvtarak ezrei Allnak hozza rendelkezésre, amelyek aelyike az alapkOnyvtarnal hatékonyabb és kifinomultabb szolgaltatasokat nyujt n példaul a Twisted halozatkezelési konyvtar vagy a NumPy szamitasi koOnyvtar -, nasok olyan specialis képességekkel rendelkeznek, amelyek az altalanosabb yytarban nem kaphattak helyet — ilyen példaul a SimPy szimulacios csomag. snyvtarak tébbsége elérhetd a Python Package Index weboldalarol, nOn.< rg/pypi cimen. ea jaraskozponta (proceduralis), objektumk6zpontu (objektumorientalt) és oer. fiiggvénykézponta (funkciondlis) programokat is irhatunk, bar maga ie sonta nyelv. Ebben a kényvben az eljaras- és objektum= it , em uti tjuk, és kitériink a Python fuggvet ‘ og ea még eee Secietn nyjtson a haszndlata, mint a Python Bees és hogy _ kényelmesebb, egyszertibb és kévetkezetesebb legyen. Ez a kOnyv a Python nyelvet szandékozik megtanitani — bar a Python alapkényvtarainak tobbsége szerepel benne, nem az Osszes. Ez nem jelent gondot, mert a konyv elolvasasa utan elegend6 Python-ismerettel fogunk rendelkezni barmelyik alapkonyvtar vagy kuls6 ython-konyvtar hasznalatahoz, és sajat kOnyvtarmodulokat is képesek leszink késziteni. A kotetet tobbféle k6zonséget szem elétt tartva készitetttik, beleértve az 6nmagukat kepzo hobbiprogramozoékat, valamint a tanulo6kat, kutatokat, mérnék6ket és masokat, akiknek a programozas a munkajuk részét képezi, és természetesen a szamitogepes szakembereket is. Annak érdekében, hogy a kétet mindenki szamara hasznos lehessen, anélkul, hogy untatna a nagyobb tudassal rendelkezéket, vagy magukra hagyna a kevésbé tapasztaltakat, feltételeztink némi programoz6i jartassagot (barmely nyelven), konkrétan az adattipusok (példaul a szamok és karakterlancok), a gyiijteménytipusok (példaul a halmazok és listak), a vezérlési szerkezetek (példaul az if és while utasitasok) és a fliggvények alapszintti ismeretét. Ezen kiviil egyes példak és gyakorlatok a HTML jelolonyelv alapfokt ismeretét is megkévetelik, a kétet végén talalhato, haladobb témakkal foglalkozo fejezetek pedig az adott temakérben vesznek adottnak nemi jartassagot; az adatbazisokat targyalo részek példaul alapszinta SQL-tudast igényelnek. A kényvet gy szerkesztettiik meg, hogy az Olvaso a lehet6 leggyorsabban a lehet6 leghatékonyabb tudast sajatithassa el. Az els6 fejezet vegere mar képesek lesztink kicsi, de hasznos Python-programokat irni. Minden fejezet egy Gjabb témak6rt mutat be, gyakran kiszélesitve és elmélyitve a korabbi fejezetekben szerzett tudast. Ez azt jelenti, ch ogy ha a fejezeteket sorrendben olvassuk, barmely ponton képesek lesztink teljes gramokat irni az addig tanultakra épitve, majd ha készen vagyunk, fenncerenen jatjuk az olvasast az Osszetettebb, kifinomultabb megoldasok megismeresevel, anna k, anes ae seu coalk bevezetiink egy ee és “ay vagy & a in oo y kOzelitése elles mértékben gyakorlatias, és arra biztatjuk az Olvasdt, hogy lja a ki a példakat és gyakorlatokat, hogy els6 kézbél szerezzen tapasztalatot. Ha csak tség es, s, példakent kicsi, de ues piepetnekal s2erepelieniny hogy valoszera i hasz- vv szerkezete ' Az 1. fejezet a Pythonnak azt a nyolc kulcsfontoss4gi részét mutatja be, amelyeknek az ' ismerete elegend6 ahhoz, hogy teljes programokat irjunk, ezen kiviil ismertet néhanyat az elérhet6 Python-programozasi kérnyezetek k6ziil, valamint két aprocska példaprog- famot, amelyek a Pythonnak a fejezet korabbi részében targyalt nyolc kulcsfontossagu — részét hasznalva késztiltek. | Ae fejezetek a Python eljarask6zponta programozasi lehet6ségeibe nyujtanak beve- pyrelecsive az alapvet6 adat- és gyUijteménytipusok, valamint szamos hasznos eee és WEZETIEsi szerkezet, valamint a legagysaarubp szOve gta) Meeeles oo alolcat ¢ és saceanaoleat, valamint Attekintiiik a Python alapkényvtarat, hogy képet kapjunk a Python-csomagban rendelkezésre allo lehet6ségekrol, és ne kelljen feltalalnunk elegvizet. t a Python objektumk6ézponta programozasi képességeibe ad mélyrehato A korabbi fejezetekben az eljaraskOzponti programozasrol tanultak tovabbra maradnak, mivel az objektumk6ézponta programozas eljarask6zponta példaul on az adat- és gyGjteménytipusokat, valamint ele eae a ; ae » q es a {¢ rm ac ( } in é 4G aZzasi pr O¢ 4 ram ipu rlés eatiabelBe a iabende srdaasni AZ oad mk6zpc actebats terén betekintést nydjt a Python szamos halado cheng Ebber ben sok-sok tj fiigevényt, osztalyt és halado eljarast — példaul a fliggvénykézpontt programozast — megismertink majd; az anyag kihivast jelent, de a jutalom s sem made A fennmaradé fejezetekben tovabbi haladé temak6rékkel foglalkozunk. A 9. ence an mutat médszereket, hogy miként oszthatjuk el egy program terhelését tobb folyamat vagy zal k6z6tt; a 10. fejezet az tigyfél-kiszolgal6 rendszerd alkalmazasok készitését mutatja be a Python szabvanyos hal6ézatkezelési tamogatasanak segitségével; a 11. fejezet az : adatbazis-programozassal foglalkozik (beleértve mind az egyszerd, kulcs—érték alapu ei ,DBM” fajlokat, mind az SQL-adatbazisokat); a 12. fejezet a Python szabalyos kifeje- a. zéseinek mininyelvét magyarazza el és szemlélteti, valamint a szabalyos kifejezések moduljat ismerteti; a 13. fejezet pedig a grafikus feltilet (GUI, Graphical User Interface) programozasaba nyujt bevezetest. A konyv fejezeteinek tobbsége meglehetdsen hosszt, mert igy az dsszefligg6 temakat kénnyebb fellapozni. A fejezeteket mindazonaltal alfejezetekre, alfejezetek alfejezeteire, o azokat pedig sokszor még kisebb részekre osztottuk, hogy a nektink legmegfelelobb a tempoban — mondjuk egyszerre csak egy alfejezetet elolvasva — haladhassunk. A Python 3 beszerzése és telepitése Ha friss, Gj Mac vagy mas Unix-szeri rendszertink van, a szAmitogéptink6n valoszinuleg mar ott van a Python 3. Ezt igy ellendrizhetjik, hogy beirjuk a python -V parancsot (igyeljiink a nagy V-re!) a konzolon (Mac OS X-en ez a Terminal. app): ha a valtozat szama 3, akkor rendelkeziink a Python 3-mal, tehat nem kell telepiteniink — ha nem ez a helyzet, olvassunk tovabb. ndows és Mac OS X rendszerekhez kénnyen hasznalhato grafikus telepitocsor 1a gor, illnak rer delkezéste, amelyek lépésrél lépésre végigvezetnek minket a telepités fo OL et a csomagokat a www.python.org/download oldalrél ste — Windows- Wonbdz6 6 telepit6t biztositanak — a sima , Windows installer’ kt iZtO — nn a géptinkben sensi er Itanium proce iy Li alata 22 ote, ] fe peas ws int ry rendszertinkhéz nem 4ll rendelkezésre Python 3-csomag, akkor lerte ask6dot a www.python.org/download cimrél, és magunknak kell Pythont. Ha a gzip-pel tomOritett tar csomagot tdltjlik le, a tar xvfz 1-3.0.tgz paranccsal csomagolhatjuk ki, mig ha a bzip2-vel becsomagoltat, akkor or valtsunk az Ujonnan létrehozott Python-3.0 kényvtarra, és adjuk kia _/configure parancsot (ha helyi telepitést szeretnénk, adjuk meg a --prefix Kapcsolot), majd futtassuk a make programot. at, hogy a felépités végén olyan tizenetet kapunk, miszerint nem minden jult lehetett felépiteni. Ez altalaban azt jelenti, hogy nem rendelkeztink néhany & ee éves fliggvényk6nyvtarral vagy fejallomannyal a szamitogépen. Példaul ha A sac elit 1e¢ modult nem lehet felépiteni, akkor a csomagkezel6 rendszerrel telepitentiink - ciel fejlesztési konyvtarat (ez Fedora alapu rendszereken a readline-devel, ‘mig Debian alapt rendszereken a readline-dev — de a csomagnevek sajnos nem mindig ‘ilyen koénnyen kitalalhatok). Ha telepitetttk a hianyzo csomagokat, adjuk ki Gjra a ./configure és a make parancsot. Ha a make sikeresen lefutott, a make test paranccsal meggy6z6dhetiink rola, hogy iden rendben van-e, bar ez nem sziikséges, és a teszt jonéhany percig eltarthat. Ha < a segitségével helyi telepitést végeztiink, elég, ha kiadjuk a make install | . Altalaban célszert kdzvetett hivatkozast létrehozni a végrehajthato python ira ( ul igy: In -s ~/local/python3/bin/python3.0 ~/bin/python3, feltéve, ive icsvet: ix=$HOME/local/python3 kapcsolot hasznaltuk, és a rendszer elérési .— pean szerepel a $HOME/bin kényvtar). Ugyanigy az IDLE- hez is érdemes lehet tt hivatkozast megadni (a fentieket alapul veve igy: feeestrprehons /pin/idle ~/bin/idle3). aay! I ként, ts a ki a make Soataaill paranc: z Ubuntu, © ee males baie are peldakra vonat fond Boe aia npn aZ, aimee a snes gor dosa ede a kényv mindségét. reorg Brandl vezet6 Python-fejleszté és Python-dokumentacidir6, aki a Python aj dokumentaci6s eszk6zeinek fejlesztéséért felel. Georgnak szamos apro hibat sikeriilt szurnia, és allhatatos tirelemmel addig magyar4zott, amig meg nem értettiik és ki nem javitottuk a hibat. Ezen kivul a példakon is szamos javitast eszk6zolt. Phil Thompson Python-szakérté a PyQt, a jelenleg rendelkezésre 4ll6 talan legjobb i Python GUI-konyvtar készitdje. Phil éles szeme és néha provokativ visszajelzései szamos pontot segitettek tisztazni és kijavitani. Trenton Schulz a Nokia Qt Software-ének (korabban Trolltech) rangidés szoftvermérndoke, a aki az Osszes korabbi konyvemnek értékes lektora volt, és most ismét a segitségemre 7 sietett. Trenton gondosan atolvasta a kéziratot, és szamos javaslatot tett, amelyeknek | k6sz6nhetéen sikertilt tisztaba tenni néhany kérdést, és jelentésen javitani a szOvegen. A fent emlitett lektorokon kiviil, akik mindny4jan a teljes konyvet elolvastak, kész6nettel tartozom még David Boddie-nak, a Nokia Qt Software rangidés dokumentacidirdjanak, aki egyben tapasztalt Python-programozo és nyilt forras programokat iro fejleszt6, és aki hasznos tanacsokkal latott el a kGnyv egyes részeivel kapcsolatban. Koszénet illeti Guido van Rossumot, a Python megalkotojat is, valamint a szélesebb ython-k6zésséget, amelynek tagjai oly sokkal jarultak hozza ahhoz, hogy a Python es Ul6ndésen annak kOnyvtarai ilyen hasznosak, a hasznalatuk pedig ilyen élvezetes legyen. net jar ppeiheoriowiniek, Debra Williams Cauley-nak a tamogatasaert, © a lis a leheté ares. tette a ae ckésztesének fi fe - phe ae a ah} Iv arsszerzokent kOozr TP O} “coma m4 : -girséban, oe 6 i frta a a Rapid 6 GUI 1 Programming tee: oes he en; | oe , ae | ey cz nn iii, ie ile el remuiee: baer ¥ Gyors bevez eljarask6zpontt programozasba ython-programok irasa és futtatasa Python ,gyOny6ord szive” Es s Bijenct elegend6 informaciéval szolgal ahhoz, hogy megirhassuk els6 Python-prog- njainkat. Ha még nem telepitetttik a Pythont, akkor most mar legf6bb ideje lesz, hiszen ff ki ey tehettink eer a foraaliakes ES eLOD; els6 kézb6l szarmazo tapasztalatokra. A fejezet els6 része bemutatja a Python-programok létrehozasanak és futtatasanak modjat. Python nyelvG programkéd megirasdra hasznalhatjuk kedvenc, egyszerii sz6vegfajlokkal dolgoz6 szévegszerkeszt6nket, bar az itt ismertetett IDLE fejleszt6k6rnyezet a k6dszerkesz- feliil tovabbi szolgdltatasokat is nydjt, példaul a Python nyelvG koddal val kisérle- etésre, illetve a kodban torténd hibakeresésre szolg4l6 eszk6zdket. nasodik rész a Python nyolc olyan kulcsfontossagt Osszetevdjét mutatja be, amelyek ban is elegend6ek hasznalhat6 programok irasahoz. Az egyes Osszetev6ket fejezetekben részletesen targyaljuk, és a konyv olvasasaval haladva melléjuk 1 hn a is). nea a = yeatre érve a ones plore megismer- nertink két révid programot, amelyek a Python nyelvnek met kOz0) hasz ancient! azonnal belek6s- _ Wolk = “Ai a hs ine ale ae ae sis 0z6 sz Pee eer Baa uiiiely ieonus ae sy UT SZ — pmenanyol betdltesére ¢ és mentesere. Alapértel p cd c:\py3eg | 3 \ py3eg\>C:\Python30\python.exe hello.py * ithogy a cd (change directory, kOnyvtarvaltas) parancsnak teljes elérési utat adtunk, nines jelent6sége, hogy melyik kényvtarban adtuk ki a parancsot. 71 Jnix kérnyezetben a fentiek helyett az alabbi parancsot kell kiadnunk (feltételezve, hogy a Python 3 a PATH kornyezeti valtozoban tarolt kOnyvtarak valamelyikében van): = at me # cd SHOME/py3eg $ python3 hello.py enet elvileg mindkét esetben azonos: Word ! egy veil barmely venir Unix vendlavertal Ay a enews eee vaiahmonils ik, érthetiink alatta Linuxot, BSD-t, Mac OS X-et, és barmilyen egyeb nix-szeral i rendszert. ou : Ls it ree out) , Lae a ‘ne aie te zOh6z hasonlo parancssorok begépelése hamar Szerencsére mind Windows, mind Unix rendszeren hasznalh m ké nyelmesebb megoldast is. Feltételezve, hogy a py3eg kény pe ~ vagyunk, Windowson egyszertien kiadhatjuk az alabbi parancsot: “itera - @:\py3eg\>hello.py are a. aa er _ A Windows a fajltipusokhoz tartoz6, a rendszerleir6 adatbazisban (Gj nevén: beallitasjegy- a __zékben) lév6 bejegyzések alapjan minden olyan alkalommal, amikor . py kiterjesztést is ' _ fajlnév keriil a konzolba, automatikusan elinditja a Python-parancsértelmezot. , well 1 a Ha a Windows az alabbi kimenettel tér vissza... (‘Hello', 'World!') ...az azt jelenti, hogy a rendszerre a Python 2 is telepitve van, és a Windows azt hivja meg 3 a Python 3 helyett. Erre a problémara az lehet a megoldas, haa .py kiterjesztésti fajlok am tarsitasat megvaltoztatjuk, Python 2-r6l Python 3-ra. Tovabbi, kevésbé kényelmes, amde biztonsagosabb megoldast jelent, ha a Python 3 parancsértelmezojét felvesszuk az elérési ttba (a példa feltételezi, hogy az alapértelmezett konyvtarba telepitettuk), €s minden egyes alkalommal mi magunk inditjuk el: la C:\py3eg\>path=c: \python30; paths : C:\py3eg\>python hello.py Kényelmesebbé tehetjtik a dolgunkat, ha létrehozunk egy py3.bat fajlt, amelybe egyetlen sorként a path=c: \python30; %path% utasitas kerll, s amelyet a C: \Windows kényvtarba mentiink, Ezek utan, ha azért inditjuk el a konzolt, mert Python 3 programokat akarunk futtatni, kezdhetjiik a py3.bat futtatasaval. Vagy akar megoldhatjuk azt is, hogy a py3 -bat -__ automatikusan lefusson. Ezt agy tehetjtik meg, hogy megvaltoztatjuk a konzol tulajdonsagatt , i (a Start menu programjai kozott keressiik meg a parancssort, es az egér jobb gombjaval a ae a _ rakattintva nyissuk meg a hozza tartoz6 tulajdonsagablakot), és a shoreut (Parancalkony Pp a i Pa ‘get (Cél) mez6jében lév6 beallitast egészitstik kia , /u /k ¢: \wrindowe) py3-bat Oe, / _ 2éssel. Figyeljtink az ,/u” és a ,/k” kapcsolok eldtt, kozott és utan lév6 szok6z6kre, €s ara ze ; ; z kiegészités a ,cmd.exe” utan kévetkezzen. >> print(file_ sizes} {Abstract .py': 4591, ‘Abstract .pyc': BTTS, ount . Ps 5354, “Acc Pount.pye': 7172, ‘alltests.py': 56554, Sere py: 2800, ‘Applia pnee.pyc': 3404, fAscii.py': 1668, ‘Ascii.pyc : 1621, ‘Atomiec.py’ = S32 B62. “Atomic .pyc': 4999, ‘average! ans.py': 1223, 'average2_ ans .py- $1765, ‘awfulpoetryl_ans.py': 1304, ‘awfulpoetry2 ans.py': 1576, bas Pes4image.py': 1734, ‘bigdigits.py : 1890, ‘bigdigits_ans.py': 1961, 'BikeStock.py': 9516, ‘BikeStock.pyc : 11649, 'BikeStock ans.py": 94 88, ‘BikeStock ans.pyc': 11744, ‘Binar yRecordFile.py': 9191, ‘Binary 1.1 4bra Recordrile pyc’: 10416, ‘BinaryRecordFile ans.py': 5231, "BinaryReco sj viet no: in 38 cok 4] = 4x IDLE Python-héja Az IDLE harom igen fontos eszkézt ad a keztinkbe. LehetGvé teszi azt, hogy kézvetlentil Python-héjba (Python Shell) irjunk Python nyelva vii kifejezéseket és kodot, illetve lassuk a k petecienyct. Van benne egy olyan kédszerkeszto, amely a Python-programok ae cit egfelelden szinezi, és kezeli a behazasokat is. Kapunk vele tovabba egy ie nibaKers” , am ta epi a k6d sorain, és azonosithatjuk, illetve oo oe kban lév6 hibakat. A Python Shell kil6nosen egyszeru al igor ee = F 4 vO6 1a ang kiprobalasakor hasznos, tovabba pen nf es rv ae : rete .E-ben meteokouals Ugyanakk« b, igy a szerz6 az javasolja, hogy haszn4ljuk az IDLE-t a k6drész-__ letezgetésre. A kon yvben szerepl6 révid ‘steuedae példak ismertetésekor Ogy y vagy — interaktiv Python-értelmez6ben, vagy az IDLE Python-héjaban oe # Mavctkex6 \kben jelent6sen béviilni fognak a Python nyelvvel kapcsolatos = Baris, ezaltal képessé valunk rdvid, A4mde hasznalhat6 programok irasara, amit ejezet utolso szakaszaban meg is tesziink. Al F thon ,,gyonyorti szive” bben a részben megismerjiik a Python nyolc kulcsfontossagt dsszetevdjét, a kovetke- | ZOkben pedig bemutatjuk, hogy miként hasznalhato ez a nyolc 6sszetev6 néhany kicsi, _ amde valés helyzetekben hasznalhato program megirasdra. Az itt targyaltakrol még igen so. K mindent el lehet mondani, ezért ha Ggy érezziik, hogy valami hianyzik a Python nyelvbdl, vagy tal unalmas médszerrel oldunk meg problémakat, akkor a szovegben lévo ‘hivatkozasok, a tartalomjegyzék, illetve a targymutato hasznalataval batran ugorjunk ne l6re. Szinte biztosan arra a megillapitasra jutunk, hogy a Python mégiscsak rendelkezik ™ hidnyolni vélt kepességgel — gyakran az itt bemutatott kifejezéseknel lenyegesen tomo- rebb formaban is —, s6t még annal is tébbet tud. 1. kulcsésszetevd: Adattipusok eh ate a tarolasa és abrazolasa olyan alapvet6 dolog, amit minden programozasi nyelv- | c el kell eee A Python jo par beepitett adattipussal rendelkezik, de mi ebb6l most ik néhanyat tekintiink 4t. A Python az egesz szamokat — a pozitivokat és a negativokat i int, & a karakterlancokat — a Unicode kédolasta karakterek sorozatait — pedig az str 4zolia. Ime néhany példa egész és karakterlanc tipusd értékekre: Ezen felt Nn 2 1P ython des a Unicode é haielaetieaeetle has nem shade az ASCII kédtablaban szerepl6k k6zul kertilhetnek ki, aho karakterlanc példajan is lathatjuk. Az tres karakterlancokat a karakt k6zétt allo semmi jelképezi. >>> "Hard Times" [5] ape E Sao trot rte" [0] ei A Python-héjak hagyomanyosan a harom ,nagyobb mint” (>>>) jelet hasznaljak készenléet i 4 jelként, 4mbar ez megvaltoztathato. A szégletes z4rdjelek minden sorozat vagy sorozatkent — felfoghat6 adattipus esetében hasznalhatok, igy a karaktersorozatok és a listak esetében 1s. A programozasi nyelv elemeinek egységes hasznalata az egyik olyan dolog, ami csodaia~ . _ tosan széppé teszi a Python nyelvet. Jegyezztik meg, hogy a Python nyelv a sorszamozast zi mindig nullaval kezdi. | A Pythonban mind az str, mind az alapvet6, szamértékeket tarol6 tipusok, mint ee E az int neki anes eer (Gammutable), vagyis az egyszer Seale mers b> rial meg az egészet: a szOgletes zardjel hasznalataval megkaphatjuk egy karaktesor . 2 -adott sorszamu helyén allo karakterét, de a zardjel nem hasznalhato arra, hogy cies eu juk a jelenleg ott lév6t. Jegyezziik meg magunknak azt is, hogy a Python nys rakter nem egyéb, mint egy egyetlen karakter hosszusagu karakterlanc.) cs Js - 7 ne a i " kezi - a eet: revidlen alabb. ; Az. atodik Rete teen i uk majd i, 5. oa e kiterjed6 targyalasara pedig a 4. fejezetben keriil sor. ELAS ie kterlancokat és az egészeket mindenre kiterjedden a 2. fejezetben targyaljuk, ul a karakterlancokon végezheté mtiveletekkel is foglalkozik. 2. | kt eaten: Objektumhivatkozasok Most, hogy van néhany adattipusunk, a k6vetkez6 sztikséges dolgot az adattipusok tarolasara hasznalhato valtozok jelentik. A Python nyelvben nem talalkozunk a szo megszokott értelmében vett valto- K i hetyettik objektumhivatkozdsokkal dolgozhatunk. Ha alland6 értéku, peldaul int va 9) y str tipusG objektumokr6l van szo, akkor objektumhivatkozas és valtozo kOzott nincs ss7reveheto kiilonbség. A megvAltoztathato objektumok esetében pedig van ugyan 6nbség, de ez a gyakorlatban ritkan érvényestil. A k6nyvben a valtozo és az objektum- atkozds kifejezéseket egyenértékGiként fogjuk hasznalni. Lassunk néhany aprocska sldat, majd beszéljiink meg néhany részletet. W b iN u e " .' "green" eo x i A nyelvtani forma ks , objektumHivatkozds = érték alaku. Nincs szukség : re negadnunk Amikor a Pikes az els6 kifejezést végrehajtja, létrehoz egy str tipusu, ose tartalmaz6o objektumot, és létrehozza az str tipusa objektumra mutato \ivatkozAst is. Gyakorlati szempontbol nyugodtan mondhatjuk azt, hogy ,,a blue anichovz rendeljiik az x valtozot”. A masodik kifejezés hasonlo. A harmadik kifeje- n Gj objektumhivatkozast hoz létre, majd a hivatkozas céljaul ugyanazt ot Allitja be, amire az x nevu objektumhivatkozas is Livegonh paises A tartalmaz6 8 str soul objektumot. Teper ey “oT fo emt ivatkozist ects iz) eyedik (x = z) kifejezés utan mind a harom hivatkozas ugyanarra az str tipust ybjektumra hivatkozik. Lévén a ,blue” karakterlancra mar nem mutat egyetlen hiva sem, a. ne thon szemétgyiijtéje nyugodtan felhasznalhatoként jelolheti meg az altala elf hz apiecuimitivatkerssoket Karokkel a memériéban -—‘(lévé eee benie negy Seo ae 1.2. abra Objektumok és objektumhivatkozdsok az, azonositok) tekintetében szdlnunk kell pat kulcsszavaival; bettivel — Az objektumhivatkozasok nevei (vagyis — — 3 __ korlatozasrél. Az azonositok nem egyezhetnek meg a Python nyelv _ vagy alahtzdssal kell kezd6dnitik, amelyet bettk, szamok és alahazasok szokozt - buldtort nem tartalmaz6 sorozata kGvethet. Az azonositok hossza nem korlatozott. A D imok a Unicode karakterk6dolassal leirhat6 karakterek k6ziil cecil Rie : As talmazz4k az ASCII kodkészlet bettfit és szamait, (,a”, 4b”, 45 52") oA”, 9B oo ee 9"), wip ezen ae még sok mindent. A Python nyelv azonositoiban megkt | | ettiket, vagyis az AZONOS{T6, az Azonosité és az veonoests ; a is : atu i ra tL en tovabbi részleteket ismerhettink megs ae ee

You might also like