2. A Python értelmező használata

2.1. Az értelmező elindítása

A Python értelemező szokásos helye a /usr/local/bin/python3.6 vagy /usr/bin/python3.6 azokon a gépeken, ahol elérhető; helyezd el a /usr/local/bin illetve /usr/bin útvonalat a Unix shell keresési útvonalán, akkor egyszerűen a következőt írhatod a Unix shellbe a Python indításához [1]

.. code-block:: text
python3.6

(Az oktató a Linuxot is a Unixokhoz sorolja, azokra is érvényesek az itt leírtak. – a fordító)

Mivel a telepítés helye telepítési opció, más helyen is lehet a program; ha nem tudod az értelmezőt elindítani, kérj segítséget egy nagyobb tudású embertől. (Például a /usr/local/python is egy gyakori hely.)

Windows alatt a Python a telepítés során gyakran a C:Python34 könyvtárba kerül (3.4-es verzió esetén), bár ez módosítható a telepító futtatásakor. Ha ezt a könyvtárat az útvonaladhoz szeretnéd adni, csak írd a következő parancsot a a DOS-os parancssorba:

set path=%path%;C:\python34

(Windowson a Python telepítésével települ az IDLE fejlesztői környezet, amely a menüsorból indítható. Érdemes lehet a kezdeti lépéseket ezen gyakorolni. Az IDLE Unix alá is telepíthető. – a fordító)

Fájlvége karaktert (Control-D Unix-on, Control-Z Windows-on) írva a Python elsődleges promptjába, az értelmező nulla kilépési státusszal (zero exit status) lép ki. Ha ez nem működik, akkor az értelmezőt a következő utasítással hagyhatod el: quit().

Az értelmező sorszerkesztője lehetővé teszi az interaktív szövegsor-szerkesztést, parancstörténet-helyettesítést és kódkiegészítést azokon a rendszereken, amelyek támogatják a readline-t. Ennek talán leggyorsabb ellenőrzése a Control-P megnyomása az első megjelenő promptnál. Ha ez sípol, akkor van szövegsor-szerkesztés; lásd az Appendix Interactive Input Editing and History Substitution fejezete bemutatja az érvényes billentyűket. Ha semmi nem jelenik meg, vagy csak egy ^P, akkor a szövegsor-szerkesztés nem elérhető; ekkor csak a backspace karakterrel törölhetsz karaktert az aktuális sorból.

Az értelmező a UNIX shellhez hasonlóan működik: ha a szabváyos bemenettel van meghívva, akkor interaktívan olvas és hajt végre utasításokat; ha fájlnév argumentummal vagy egy fájllal, mint szabványos bemenettel hívjuk meg, akkor szkript-ként lefuttatja a megadott fájlt.

Egy másik lehetőség az értelmező indítására a python -c parancs [arg] ... parancsor, amely végrehajtja az utasítás(oka)t a parancs-ban, hasonlóan a shell -c opciójához. Mivel a Python utasítások gyakran tartalmaznak szóközöket, vagy más speciális karaktereket, amelyeknek speciális jelentésük van a shell számára, jobb, ha a parancs részt egyszeres idézőjelbe tesszük.

Némelyik Python modul önálló programként is használható, ha így hívod meg: python -m modul [arg] ... – ez az utasítás végrehajtja a modul forráskódját.

Sokszor hasznos, ha egy szkript-fájl futtatása után rögtön interaktív üzemmódba kerülünk. Ezt egyszerű elérni, a szkript neve előtt adjuk meg az -i kapcsolót.

Az összes parancssori kapcsoló leírása megtalálható itt: Command line and environment.

2.1.1. Argumentum-átadás

Ha az értelmezőt szkript-fájllal indítjuk, akkor a szkript-fájl neve és a nevet esetleg követő argumentumok a sys modul argv változójához rendelődnek, ez egy karakterláncokból álló lista. Ennek hossza leglább 1; amennyiben sem szkrip-nevet, sem semmilyen argumentumot nem adunk meg, a sys.argv[0] változó értéke üres string lesz. Ha a szkript neveként '-'-t adunk meg (ez a szabványos bemenetnek felel meg), sys.argv[0] értéke '-' lesz. Argumentumként -c parancs-ot megadva sys.argv[0] értéke '-c' lesz. Ha a -m modul formát hasznájuk, akkor a sys.argv[0] változóban a modul teljes neve kerül. A -c parancs vagy a -m modul után álló kapcsolókat az értelmező nem dolgozza fel, hanem a sys.argv-ben eltárolva a parancs-ra vagy modul-ra hagyja annak feldolgozását.

2.1.2. Interaktív (párbeszédes) mód

Amikor a parancs a tty-ről (pl. billentyűzet) érkezik, az értelmező úgynevezett interaktív (párbeszédes) üzemmódban működik. Ekkor az elsődleges prompt megjelenítésével kéri a következő parancs megadását. Az elsődleges prompt szokásosan három egymás után következő nagyobb-jel (>>>); a sorok folytatásához ezek a folytatólagos sorok – a másodlagos promptot jeleníti meg, amelyek szokásos értéke három egymás után írt pont (...). Azt értelmező elindulásakor, mielőtt az elsődleges prompt megjelenne, egy üdvözlő-szöveget ír ki, amely tartalmazza az értelmező verziószámát és a jogi védettséget:

$ python3.6
Python 3.6 (default, Dec 26 2016, 09:25:04)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

Folytatólagos sorok szükségesek, ha többsoros szerkezeteket írsz be. Például a következő if utasítás esetén:

>>> a_vilag_sik = True
>>> if a_vilag_sik:
...     print("Vigyázz, nehogy leess!")
...
Vigyázz, nehogy leess!

Az interaktív módról itt olvashatsz bővebben: Interactive Mode.

2.2. Az értelmező és környezete

2.2.1. Hibakezelés

Hiba esetén az értelmező hibaüzenetet küld és kiírja a hiba nyomvonalát (stack trace). Párbeszédes üzemmódban az elsődleges promt jelenik meg; ha az adatok beolvasása fájlból történt, kiírja a hibanyomvonalat és nullától eltérő kilépési értékkel tér vissza. (A programon belül fellépő és a program által kezelt kivételek (except - try ) nem jelentenek hibát ebben a környezetben.) Vannak feltétel nélküli, úgynevezett végzetes hibák, amelyek azonnal, nullától eltérő visszatérési értékkel történő programmegszakítást és kilépést eredményeznek, ilyenek a belső inkonzisztenciát okozó, valamint a memóriából kifutó programok hibái. Minden hibaüzenet a szabványos hibakimenetre (standard error) kerül, a futtatott parancsok rendes kimenete pedig a szabványos kimenetre (standard output) íródik.

Ha az elsődleges, vagy a másodlagos promptnál a megszakítás-karaktert gépeljük be (rendszerint Control-C vagy a DEL billentyű), az törli az eddigi bemenetet és visszaadja a vezérlést az elsődleges promtnak. [#]_

Ha a megszakításkérelmet valamely parancs/program végrehajtása alatt adjuk ki, az KeyboardInterrupt kivételt generál; ez programból a try utasítással ‘kapható el’.

2.2.2. Végrehajtható Python szkriptek

A BSD-szerű Unix rendszereken (Linuxon is) a Python-szkripteket ugyanúgy, mint a shell szkripteket - közvetlenül futtathatóvá lehet tenni, legelső sorként megadva ezt

#! /usr/bin/env python3

(feltételezve, hogy a Python értelmező elérési útvonala a felhasználó PATH változójában be van állítva és a szkript fájl végrehajtható tulajdonsággal bír).

A fenti esetekben a fájlnak a #! karakterekkel kell kezdődnie. Ezt a sort néhány platformon Unix-típusú sorvéggel ('\n') kell lezárni, nem pedig Windows-os ('\r\n') sorvéggel. Megjegyezendő, hogy a '#' karakterrel a Pythonban a megjegyzéseket kezdjük.

A szkriptnek a chmod paranccsal adhatunk végrehajtási engedélyt az alábbi módon:

$ chmod +x szkriptem.py

A Windows rendszeren nincs “végrehajtható” mód. A Python telepítő automatikusan a .py fájlokat a python34.exe utasításhoz társítja, így egy Python-fájlon duplán kattintva az elindul szkriptként. A kiterjesztés .pyw is lehet, ilyenkor a konzolablak, amely nem fog megjelenni. , in that case, the console window that normally appears is suppressed.

2.2.3. A forráskód karakterkészlete

Alapállapotban a Python forrásfájlokat UTF-8-as kódolásúnak tekintjük. Ebben a karakterkódolásban a legtöbb nyelv karakterei használhatóak egyszerre egy sztringben, változónévben és megjegyzésben. A standard könyvtár csak ASCII karaktereket használ változónévnek: ezt a megállapodást minden hordozható kódnak követnie kellete. Ahhoz, hogy az összes karakter helyesen jelenjen meg, az szövegszerkesztőnek fel kell ismernie, hogy a fájl UTF-8-as, és olyan betűtípust kell használnia, amely tartalmazza a fájlban szereplő összes karaktert.

Lehetséges ettől eltérő kódolást is megadni a forrásfájlban. Hogy ezt megtehessük, még egy speciális megjegyzés-sort helyezzünk a #! sor után, hogy definiáljuk a kódolást:

# -*- coding: kódolás -*-

A kódolás megadásával a forrásfájlban mindent kódolás kódolással kerül értelmezésre UTF-8 helyett. A lehetséges kódolások a Python Library Reference-ben találhatóak a codecs szakaszban.

Példáuk, ha a kiválasztott szövegszerkesztő nem támogatja az UTF-8 kódolást, és más kódolásra, mondjuk Windows-1252 kódolásra van szükség, az alábbi írható:

# -*- coding: cp-1252 -*-

és máris az összes Windows-1252-ben található karakter használható a forrásfájlban. A speciális kódolás-megjegyzésnek az első vagy második sorban kell lennie.

Lábjegyzet

[1]On Unix, the Python 3.x interpreter is by default not installed with the executable named python, so that it does not conflict with a simultaneously installed Python 2.x executable.