A Python programozási nyelv

Modulok, csomagok, névterek

A Python lehetővé teszi, hogy nagyobb terjedelmű scripteket, programcsomagokat a belső struktúrájának megfelelően tagoljunk és ezt a programszövegben is jelezzük. Erre szolgálnak a modulok, amelyek logikailag összetartozó programrészeket fognak egybe. A modul neve az azt tartalmazó file neve. A modulok kiterjesztése .py a konvenciónak megfelelően. Egy modul neve a modulon belül a __name__ modul-globális szimbólumon keresztül hozzáférhető. Modulokat más scriptekből az import vagy from module import * utasításokkal importálhatunk. Az első forma a teljes modult, a második a modul bizonyos függvényeit importálja (a `*' helyett vesszővel elválasztott felsorolás is állhat). A második formában a `*' használatánál a `_'-sal kezdődő függvények nem importálódnak. A modulok állományrendszerbeli keresése a PYTHONPATH környezeti változóban felsorolt könyvtárak sorrendjében történik.

Névterek: hasonlóan a C++-beli namespace-ekhez, a különböző nyelvi elemeknek Pythonban is létezik struktúrája. A struktúra különböző szintjeit `.'-tal választjuk el egymástól. A névterek általában láthatósági tartományokat is jelölnek. A névtér tulajdonképpen név -> objektum leképezések halmaza, jelenleg így is vannak implementálva (szótárakkal). Általános felhasználásra szánt programcsomagokat szervezhetük ún. csomagokba is, melyek tetszőleges mélységű struktúrával rendelkezhetnek. Perl-hez hasonlóan az állományrendszerben tükröződik a csomagok struktúrája. Például egy hangállományokat kezelő Python csomag a következőképpen nézhet ki:

Sound/
        __init__.py
        Formats/
               __init__.py
               au.py
               aiff.py
               wav.py
               ...
        Effects/
               __init__.py
               spiral.py
               ...
        Filters/
               __init__.py
               mp3.py
               cd.py
               cut_above_16kHz.py
               ...

Az __init__.py nevű speciális állományokra szükség van, hogy a Python csomagokként kezelje a könyvtárakat. Ez lehet üres, vagy tartalmazhat inicializációs kódot, ami a csomag importálásánál fut le.

Többsoros importálás:

Amikor a from module import fv1, fv2 utasítást használjuk, akkor vesszővel elválasztva majd a sor végén backslash-sel külön sorba is írhatjuk a függvényneveket.

from SimpleXMLRPCServer import SimpleXMLRPCServer,\ SimpleXMLRPCRequestHandler,\ CGIXMLRPCRequestHandler,\ resolve_dotted_attribute

Python 2.4.: Használható még: from module import (fv1,fv2) is. Itt nem kell backshlash a sorok végére, elég vesszővel elválasztani a függvényneveket.

from SimpleXMLRPCServer import (SimpleXMLRPCServer, SimpleXMLRPCRequestHandler, CGIXMLRPCRequestHandler, resolve_dotted_attribute)