Modulok - nyelvi tankönyv python 3

Python, akkor tegye meg a szükséges meghatározásokat egy fájlt, és használja őket egy script vagy interaktív módon a tolmács. Egy ilyen file neve modul (modul). A meghatározások a modul lehet behozni más modulokat vagy a fő egység (egy gyűjtemény változó lehet hozzáférni a forgatókönyvet, amely közvetlenül futtatható, és az online mód).

Most megadhatja a Python és importálja a modult az alábbi parancsot:

Ez a művelet nem lefordítani a nevét bizonyos funkciókat a modult szimbólumtáblában, de csak a név fibo modult. A modul neve érheti el a funkciók:

Ezt a technikát gyakran használják, hogy egy felhasználóbarát felület a modul vagy tesztelésére (futás a modult egy szkript a tesztsorozat).

Keresés Path modul

Ha egy modult nevű spam. A tolmács megkeresi nevű fájl spam.py az aktuális könyvtárban, majd a megadott könyvtárakban a környezeti változó PYTHONPATH. Ő ugyanaz a szintaxis a shell PATH változó. ami viszont a jegyzékben. Ha a változó PYTHONPATH nincs beállítva, vagy a fájl nem található a leírt helyet benne, a kutatás folytatódik az alapértelmezett útvonal, ami függ a telepítés során megadott; Unix általában :. / usr / local / lib / python.

Tény, hogy a kereső modul, a jegyzéklistát változó sys.path. amely jellemzően: a könyvtárat, ahol a szkript bejáratánál található (vagy az aktuális könyvtárba), PYTHONPATH és az alapértelmezett megadott könyvtárban a telepítés során. Ez lehetővé teszi, hogy programozni Python (akik tudják, mit csinálnak) módosítja, vagy cseréljük ki a modult keresési útvonalat. Megjegyzés: mivel a könyvtár tartalmazza a végrehajtható akkor script is található a keresési útvonalon, fontos, hogy nem volt forgatókönyv a szokásos modul nevét. Ellenkező esetben, ha a modul importált, Python megpróbálja betölteni a modult formájában a forgatókönyvet is, amely hibát okoznak a legtöbb esetben. További információkért lásd a szabványos egységekben.

„Összeállított” A Python-fájlok

A Python-értelmező használ egy fontos technika, hogy felgyorsítsa a kezdete a program: ha a könyvtárba, ahol a fájl található egy bizonyos modult spam.py. Ugyancsak spam.pyc fájlt. azt feltételezzük, hogy ez fordítva bytecode ( „byte-fordított”) változata a modul spam. A fájl spam.pyc rögzített fájl módosítási ideje spam.py változat létrehozásához használt spam.pyc. Ha a verzió nem egyezik - .pyc fájlt figyelmen kívül hagyja.

Normális esetben, ha nem kell semmit tennie, hogy hozzon létre spam.pyc fájlt. Minden alkalommal spam.py sikeresen összeállítani, kísérletet teszünk, hogy írjon a lefordított verziót spam.pyc. Nem hiba, ha ez a kísérlet nem sikerül: ha bármilyen okból kifolyólag a fájl írása nem teljesen, a kapott spam.pyc fájl érvénytelennek tekintjük, és ezért figyelmen kívül hagyja a jövőben. Tartalom spam.pyc fájl platform-független, így Python modul könyvtár is használható együtt egy másik gépen építészet.

Több szakértő tanácsot:

A standard modulok

Python szállítjuk a könyvtár a standard modulok, leírt egy külön dokumentumban, Handbook Python könyvtár (a továbbiakban: - "Handbook of könyvtár"). Egyes modulok be vannak építve a tolmács. Hozzáférést biztosít a műveleteket, amelyek nem szerepelnek a lényege a nyelv, és épülnek a hatékonyság és a hozzáférés biztosítása a fő operációs rendszer, mint például a rendszer hívásokat (rendszer hívások). A készlet az ilyen modulok - a választási lehetőségek, a platformtól függően. Például a winreg modul csak Windows rendszereken. Egy adott modul több figyelmet érdemel: sys modul. beépített minden Pyton változata. Változók és sys.ps1 sys.ps2 meghatározzák vonalak, amelyek a szokásos fő és kiegészítő meghívók

Ez a két változó csak meghatározni az interaktív módban a tolmács.

A változó sys.path megtalálja a húrok, amely meghatározza az értelmező keresési útját modulokat. Ez inicializálja az alapértelmezett útvonal venni a környezeti változó PYTHONPATH. vagy beépített alap, ha PYTHONPATH nincs beállítva. Meg lehet változtatni az értékét standard listákkal műveleteket:

dir () funkció

Beépített dir () funkció használni ahhoz, hogy a meghatározott nevek a modul. Ez visszaad egy rendezett listát a húrok:

Ismét így betöltött echo részmoduinak. de most echofilter () függvény közvetlenül hívható:

Vegye figyelembe, hogy ha kifejezéseket csomag import tétel. elem lehet részmodul (vagy részcsomaghoz) a csomag vagy más meghatározott név a csomag - például a függvény, osztály vagy változó. Import üzemben először ellenőrzi, hogy a csomag tag megadott; - ha nem, kezeli azt a modult, és megpróbálja betölteni. Ha nem találja, kivétel keletkezik ImportError.

Ezzel szemben, ha használja a szintaxis a stílus az import elem .podelement .podelement. minden elem, kivéve az utolsó kell lennie egy csomagot; Az utolsó tétel lehet egy modul vagy egy csomagot, de nem lehet egy osztály vagy függvény vagy változó definiált az előző elemre.

Importálása * Egy csomag

Mi történik, ha a felhasználó írja származó sound.effects importálni *. Ideális esetben reméljük, hogy ezen a módon a kód megy a fájlrendszer és talál néhány al-modulok a csomag importálja mindet. Sajnos ez a módszer nem működik jól a Windows, mert a fájlrendszer nem mindig a helyes információt fájlneveket regisztráljon. Ezeken a platformokon, nincs garantált módja annak, hogy tudja, hogy kell-e importálni a fájlt ECHO.PY az echo modul. Echo vagy ECHO. (Például a Windows 95 van bosszantó szokása mutatja az összes fájl nevét nagybetűvel.) DOS korlátozás a fájl nevét a következő formátumban 8 + 3 hozzáad egy szórakoztató probléma kapcsolódó hosszú modulok nevét.

Ez azt jelenti, hogy az expresszió sound.effects import * import a három megnevezett almodulokat a hang csomagot.

Ha a lista nem definiált __all__ üzemeltetőt Sound.Effects import * nem importálja részmoduiok sound.effects csomagot az aktuális névtérben: csak akkor van arról, hogy az importált sound.effects csomag (talán teljesítő inicializáló kódot __init__.py), majd importálja az összes meghatározott nevek a csomagot. Ebben a listában fog semmilyen meghatározott nevek (és almodulokat kifejezetten betöltve) a __init__.py. Ez magában foglalja az összes kifejezetten betöltött korábbi import kimutatások almodulokat. Tekintsük a következő kódot:

Ebben a példában az echo és térhatású modulok hoznak az aktuális névtérben mert meghatározott sound.effects csomag idején, amikor a kezelő kerül végre. import. (Úgy is működik, ha meghatározott __all__.)

Megjegyezzük, hogy általában, importáló * egy modul nem szívesen, mert az eredmények gyakran rosszul olvasható kódot. Azonban ez rendben van, hogy használja az interaktív munkamenet nyomtatni kevesebb, és bizonyos modulok kialakítása exportálni csak azokat a neveket, amelyek követik bizonyos mintát.

Emlékezz arra, hogy a csomagolásból import opredelonnyy_podmodul nincs semmi baj. Valójában - ez az ajánlott lépéseket, amíg ha importál a modul nem kell használni részmoduiok az azonos nevű, különböző csomagokat.

Linkek a csomagon belül

Amikor csomagok szerveződnek alcsomag (például abban az esetben, hangrendszer) utalni-gyermek csomagot, akkor az abszolút import (abszolút import). Például, ha sound.filters.vocoder modulnak szüksége modul visszhangja sound.effects csomagot. kell használni sound.effects import visszhang.

Ön is használja a relatív import (relatív import), az alábbi űrlapot a behozatali nyilatkozatot. modulról import nevét. Ezzel a módszerrel az importáló leírni a jelenlegi és a szülő csomagot használunk szimbólum pontot. Például a térhatású modul, akkor írj:

Megjegyezzük, hogy a relatív import alapja a jelenlegi modul nevét. Mivel a neve a fő modul mindig „__main__”, modulok felhasználásra szánt, mint a fő modul Python alkalmazás mindig használja az abszolút import (abszolút import).

Csomagok több könyvtárat

Csomagok támogatja még egy különleges tulajdonsága: __path__. Mielőtt a futtató __init__.py ezt a csomagot, akkor kezdetben a lista nevét tartalmazó könyvtárba, ahol a fájl található. Megváltoztatása egy változó, akkor befolyásolja során a keresési modulok és alcsomag a csomagban.

Bár ez a funkció nem szükséges olyan gyakran, akkor lehet használni, hogy növelje a különböző modulokat, amelyek a csomagban.

Kapcsolódó cikkek