A Python programozási nyelv

Bevezetés

FIGYELEM!
A szerzők (azaz mi :-) feltételezik, hogy az Olvasó ismeri a programozási nyelvek alapfogalmait, s azok megvalósítását valamely konkrét nyelvben! Az itt található anyag ezen ismeret hiányában esetenként túl tömörnek tűnhet.

Mi az a Python?

A Python egy könnyen tanulható, de hatékony programozási nyelv. Magasszintű adatstruktúrái, az objektum-orientáltság egyszerű megközelítése, elegáns szintaxisa, dinamikus típusossága és interpreteres mivolta ideális script-nyelvvé teszi. Kiválóan alkalmas gyors fejlesztői munkákra, nagyobb projektek összefogására. Tulajdonképpen a Python nem a kifejezés szigorú értelmében vett interpreter: a Python byte-kódot fordít és azt futtatja. A szintaxisból adódóan nagyon gyors fordítót lehet írni, ezért "néz ki úgy", mintha interpretált lenne a nyelv.

A Python az ABC nyelv által ihletve a Stichting Matematikai Centrumban, Amsterdamban (Hollandia) készült, Guido van Rossum által. Az utolsó CWI-ben készült verzió az 1.2-es volt. A későbbiekben Guido átpártolt a Corporation for National Research Initiatives (CNRI) intézményhez, ami az 1.6-os verzióig szponzorálta a Python fejlesztését. 2000-ben Guido és csapata megalapította a BeOpen Pythonlabs nevű céget, ahol is megszületett a 2.0-s verzió. Ezek után a csapat csatlakozott a Digital Creations nevű szervezethez és innentől kezdve a szellemi termékek joga a Python Software Foundation tulajdona lesz (az Apache Software Foundation mintájára). Kísérletet tesznek arra, hogy visszamenőlegesen is ezek a jogok mind átszálljanak a PSF-re, így a Python visszanyeri teljesen szabad szoftver mivoltát. Nevét a Monty Python csoportról kapta. (A készítők az abszurd humort kedvelik! Semmi kígyó vagy ilyesmi.) Az interpreter és a szabványos könyvtárak forrás- és (a legtöbb platformra) bináris kódjai szabadon elérhetőek. Jelenleg is aktívan fejlesztik, minden egyes új verzió sok új modult tartalmaz. A nyelv szintaxisa még változik/változhat, 1.5 -> 1.6 -> 2.0 verziókban mind voltak apróbb forrás-inkompatibilitást okozó változások.

Az interpreter könnyen bővíthető C,C++ vagy más C-ből hívható nyelven megírt függvényekkel és adattípusokkal. Rövid programok írása gyors, egyszerű és jól áttekinthető.

A legújabb verzió a 2.6.4, de már elérhető az 3.X.

Néhány újdonság, amiket a Python 2.4.-ben vezettek be:

-Beépített halmaz objektumok: a 2.3-as verzióban már bevezették a halmaz (sets) modult. Most a halmaz adattípus c implementációját hozzávették a Python magjához, mint 2 új adattípust: set(iterable) és frozenset(iterable). Gyors műveleteket biztosítanak az elem lekérdezésre, a kétszeres előfordulás kiküszöbölésére és a matematikai műveletekhez: unió, metszet, különbség, szimmetrikus differencia. A frozenset típus az immutable változata a set típusnak.

-Egyesítették a Long Integer és az Integer típusokat.

-Generátor kifejezések: Az iterátort a Python 2.2-ben vezették be és az itertools modul könnyebbé tette olyan programok írását, ami nagy adathalmazokat használ, anélkül, hogy az egész adathalmaz egyidejűleg a memóriában lenne. A generátor kifejezések a listákhoz hasonlóan működnek, de nem hoznak létre egy egész listát, helyette létrehoznak egy generátort, ami egyenként tér vissza az elemekkel.

-Egyszerűbb String helyettesítés

-Decorators a függvények és metódusok számára: egyszerűbbé válik a szintaxis

-Új beépített függvény a reversed(seq), ami egy sequence-t vár bemenetként és egy iterátorral tér vissza, ami ciklikusan végigmegy a sequence elemein fordított sorrendben.

-Új modullal bővült a standard könyvtár: subprocess module

-Új decimális adattípus

-Hely (location) független Float/String konverzió

-Modulok importálása változott

-Új modulokat vezettek be (subprocess, decimal, cookielib), sok modult tovább fejlesztettek és néhányat megszüntettek.

 

A dokumentum eredetileg az 1.5-ös verzióhoz készült, a nyelv változásai külön kerülnek megemlítésre a verziószámmal együtt.

Végrehajtási mechanizmus

A kódblokk (code block) egy Python programszöveg-rész, mely egységként végrehajtható. Kódblokkokat egymásba ágyazhatunk illetve egy kódblokk meghívhat egy másikat. Kódblokkok a következőek:

Egy kódblokk egy végrehajtási keretben (execution frame) hajtódik végre. Egy végrehajtási keret tartalmaz néhány adminisztratív információt (hibakeresés esetére), meghatározza, hogy hol és hogyan folytatódjon a végrehajtás a kódblokk lefutása után és definiálja a lokális és a globális névtartományt, amely befolyásolja a kódblokk végrehajtását.

A névtartomány (name space) egy megfeleltetés azonosítók és objektumok között. Egy konkrét névtartományra több végrehajtási keret is hivatkozhat. Egy névtartományt érintő műveletek:

Funkciójukban ekvivalensek a szótárakkal, ezért gyakran így is valósítják meg őket.