modul importlib
Python kínál importlib csomag részeként a standard könyvtár modulok. Feladata - végrehajtásának biztosítására a Python import utasítás, valamint a funkciók __import __ (). Emellett importlib ad a programozó képes létrehozni saját tárggyal (pl importőr), amelyeket fel lehet használni, hogy a behozatali folyamatot.
Mi a helyzet az imp?
Van egy másik modul, az úgynevezett imp, amely felületet biztosít mögötti mechanizmus Python import nyilatkozatot. Ez a modul már elavult Python 3.4. Azt feltételezik, hogy importlib kell használni.
Ez a modul nagyon nehéz használni, ezért korlátozni fogja a látókörét, és elsősorban az alábbi témákban:
- dinamikus import
- Ellenőrzés lehetőségét modul import
- Kényelmes harmadik fél modul nevű import_from_github_com
dinamikus import
importlib modul támogatja a képesség, hogy egy modult, ami átkerült vonalon. Tehát tegyük néhány egyszerű modult, amivel lehet dolgozni. Mi fog kiosztani minden modul ugyanazt a felületet, de nekik, hogy visszavonja a nevüket, hogy a különbség a kettő között. Mi hozza létre a két modul különböző nevekkel, mint például foo.py és bar.py. és adjunk nekik a következő kódot:
Itt mi import importlib modul és hozzon létre egy nagyon egyszerű nevezett funkció dynamic_import. Mindent, ami ezt a funkciót, akkor kéri egy másik funkció importlib - import_module string modul, amit átadott neki, és visszaadja az e felhívás eredményeként. Továbbá, a mi feltételes alábbi nyilatkozat, tudjuk hívni a fő módszer minden modul, amely kötelességtudóan neve jelenik meg a modul. Akkor nagy valószínűséggel nem fog meg gyakran a kódomat, de néha szükség lehet importálni a modult, amikor azt bemutatják csak a húr. importlib modul lehetővé teszi, hogy nem csak ezt.
Ellenőrizze az importált modul
Python tartalmaz egy kódolási stílus az úgynevezett EAFP: Könnyebb bocsánatot kérni, mint engedélyt (könnyebb bocsánatot kérni, mint engedélyt). Ez azt jelenti, hogy gyakran könnyebb azt feltételezni, hogy valami létezik (például kulcs a szótárban), és észreveszi a hibát, ha nem. Korábban azt próbálta behozni a modul, a valószínűsége, hogy egy hiba ImportError. ha ez nem létezik. Mi van, ha meg kell vizsgálnunk, és látni, ha a készüléket lehet behozni, hogy megszüntesse a találgatás? Ez úgy érhető el a importlib!
print (dir (modul))
Itt vagyunk importáló részmoduljai importlib nevű util. Az első rész a kód tartalmaz check_module igazi varázslat, amit látok. Ebben, hívjuk a funkció modul find_spec vonal vezetünk korábban. Először is végre átviteli létre hamis nevek, akkor ugyanezt, de ez a Python modul nevét. Ha ezt a kódot, akkor azt találjuk, hogy ha átmennek a nevét egy azonosítatlan egység find_spec függvény visszatérési Nincs és kódunk veszi észre, hogy a modul nem található. Amikor megtaláltuk, akkor mi visszatérítjük a modul specifikáció. Tudjuk hogy a specifikációt, és ez az import a modult. Vagy egyszerűen csak át egy string import_module funkciót. ahogy tettük az előző részben. Emiatt úgy véljük, a használata a modul specifikáció, mint egy alternatív módszert. Vessen egy pillantást a funkció import_module_from_spec a fenti kódot. Beletelik egy leírás modul, amely visszatért a funkció check_module. Ezután átadjuk működik module_from_spec. amely visszaadja az import modult. A Python dokumentációt ajánlatos kezdeni a modul az importálás után, az, hogy mit teszünk a segítségével exec_module funkciót. Végül megkapjuk a modult, és futtassa dir Python vele, hogy megbizonyosodjon arról, hogy a modul amit vártunk.
Import a forrás fájl
Részmoduinak a importlib nevű util teheti trükk, amit érdemes megfontolni. Használhatja importálni util modul, csak a fájl elérési útját és nevét. Nézzük a következő példát, hogy megértsük, mi az, ami: