A Python nyelv legelterjedtebb, kanonikus implementációja a C nyelven írt CPython. (A linkre kattintva tájékozódhatunk a többi implementációról és a támogatott platformokról is.) A C betűt a névben csak akkor használják, ha kifejezetten meg kell különböztetni más implementációktól (pl. a Javában fejlesztett Jythontól), egyébként csak Pythonként említik. (A CPythont ne keverjük össze a Cython kiegészítéssel!) Érdekes lehet még a .NET keretrendszerre tervezett IronPython implementáció is.
A Pythonnak jelenleg (2010 novemberében) két legfrissebb stabil verziója van. Miközben évek óta fejlesztik a 3.x sorozatot, néhány újdonságát visszamenőleg beépítették a 2.x-be is, és annak is újabb verziói jöttek ki. (A 2.6 a 3.0, a 2.7 pedig a 3.1 verzióból vett át új fejlesztéseket.) A legfrissebb stabil verziók:
- 3.1.2 (2010. március 21.)
- 2.7 (2010. július 3.)
A 2.7 változattal befejeződött a 2.x sorozat fejlesztése, de a tervek szerint a szokásosnál hosszabb ideig fog támogatást kapni. (Ennek konkrét tartalmát nem határozták meg.) A 3.2 2010 novemberében alfaváltozatban van, stabil kiadását 2011. február 5-ére tervezik. Előkészületben van két kisebb fejlesztés, a 3.1.3 és a 2.7.1 is. A készülő verziók aktuális állapota a http://python.org/doc/ lap bal alsó sarkában, a Release Schedule cím alatt látható.
A pendrive-ra telepíthető Portable Python jelenleg a 2.6.1 és a 3.0.1 változatokhoz érhető el.
A kettes és a hármas változat összehasonlítása[]
A 3.0 verzió Python 3000 avagy Py3K néven is ismert. Ez a név kitalálásának idején a távoli jövőre utalt.
A fő verziószám arra utal, hogy a 3.x sorozat inkompatibilis a 2.x-szel, vagyis a korábbi programokat részben át kell írni rá. Éppen ezért (a világban futó Python-programok sokaságára való tekintettel) folytatták a 2.x sorozat fejlesztését a 3.x-szel párhuzamosan. A hármas verzióhoz egy automatikus konvertálóprogramot is mellékeltek 2to3
néven. Az újítások egy részét a 2.6–2.7 verzióba is átvezették, hogy az átállás zökkenőmentesebb legyen.
Guido van Rossum döntése alapján a nyelv tisztasága érdekében első ízben adták fel a visszamenőleges kompatibilitást. A változások nem érintik a nyelv alapjait, csak következetesebbé teszik (a print
utasítás például print()
függvénnyé változott), és tovább erősítik szigorú típusosságát. Az 1 < ''
összehasonlítás így hamis érték helyett kivételt dob. Csak egyetlen beépített egész típus maradt, az int
, amely azonban a régi long
-nak felel meg (és tetszőlegesen nagy egész számokat tud ábrázolni).
A 3.0 verzió a Unicode-ot teszi a szövegkezelés alapjává (nincs többé bevezető u
betű a stringek előtt), és bevezet egy bytes
típust a 8 bites értékekből álló karakterláncok (köztük a kódolt Unicode-szövegek) számára; a kettő azonban nem keveredhet tisztességes konverzió nélkül. A „text” elnevezés tehát Unicode szövegekre, a „data” 8 bites karakterekből álló sorozatokra utal. (A 3.2 alfaverzió leírásából úgy tűnik, itt még vannak javítás alatt álló hibák.) Figyeljünk tehát oda, hogy Windowsban a jegyzettömbbel írt programszövegek mentésekor mindig ki kell választani az UTF-8 kódolást![1] Mellékhatásként a változók és függvények nevében is lehet ékezet (persze csak akkor használjuk, ha biztosak vagyunk benne, hogy a kódunk nem kerül ki a magyar nyelvi környezetből!).
A 3.0 verzió kezdetben lassabb futást eredményezett, mint a forgalomban levő 2.x-es kód, de ezt a fejlesztések során folyamatosan javítják. Ugyanakkor sokan ódzkodnak az áttéréstől, mert a megszokott kiegészítő moduljaiknak csak egy része van még átírva 3.x-re, és nem mindent tudnak elérni, amit korábban használtak. A kezdőket ez a probléma nem érinti, és hangsúlyozandó, hogy a nyelv magja és a standard könyvtár bőségesen elegendő az érettségi szintjéhez! (Jellemzően egyáltalán nincs szükség importálásra.) Mivel a 3.0-1 verzió újdonságait backportolták a 2.6-7-be, az ilyen problémával küszködők számára jó ötlet lehet 3.x-es szintaktikájú programokat írni, és 2.7 alatt futtatni azokat.
Összességében nem látszik semmi ok rá, hogy a nyelvvel most ismerkedők a 2.x változatot válasszák, vagy ennek az elterjesztésére törekedjünk a közoktatásban. Számítsunk azonban arra, hogy a régebbi könyvekben talált vagy az internetről begyűjtött kódok részben elavultak lehetnek, és módosításra szorulhatnak. (Ez ne szegje senki kedvét, a nyelvtanításból sem száműzték a németet a helyesírási reform miatt.) Ha ilyen problémába ütközünk, a lenti „What's New?” dokumentumok, valamint a Verziók felismerése és átalakítása szócikk tanulmányozása segíthet.
Felülről való inkompatibilitás tehát egyetlen esetben léphet fel: ha 2.x verzióban készült programot 3.x alatt próbálunk futtatni (azonban ebben az esetben sem feltétlenül fog fellépni, ha a program 2.6–2.7 verzióban készült, és a szerző odafigyelt a kompatibilitásra).
Lásd még[]
Olvasmányok[]
- Részletesebben a verziószámokról a Wikipédiában
- A docs.python.org linken a 2.7 verzió hivatalos dokumentációját érjük el; a bal oldali menüben találjuk az összes többit. Itt pedig az összegyűjtött „What's New?” leírások vannak a 2.0-tól a 3.2-ig. A linkek melletti ikon az egész wikiben a hivatalos dokumentációra utal.
- Moving from Python 2 to Python 3 (PDF puska, 4 oldal)
- A 2.7 verzió jövője
- Python 2 vagy Python 3?