Modul importálása Python példákkal
Milyen modulok vannak benne Python?
A modul egy python kóddal rendelkező fájl. A kód lehet változók, függvények vagy definiált osztályok formájában. A fájlnév lesz a modul neve.
Például, ha a fájl neve guru99.py, akkor a modul neve a következő lesz guru99. A modulfunkciókkal a kódot különböző fájlokra bonthatja, ahelyett, hogy mindent egy fájlba írna.
Mi a Python import modul?
A fájl a pythonban modulnak számít. A modul használatához importálnia kell a segítségével az import kulcsszó. A fájlban található függvény vagy változók a modul importálásával egy másik fájlban is használhatók. Ez a funkció más nyelveken is elérhető, például gépírással, JavaSzkript, java, rubin stb.
Modul létrehozása és importálása Python?
Most létrehozunk egy modult és importálunk egy másik fájlba.
A modul létrehozásának és importálásának folyamata a képernyőképen látható módon:
Kövesse a megadott lépéseket a modul létrehozásához a pythonban.
A kód teszteléséhez használt mappastruktúra a következő:
modtest/ test.py display.py
Step 1) Hozzon létre egy fájlt, és nevezze el test.py-nek
Step 2) A test.py fájlban hozzon létre egy display_message() függvényt
Def display_message(): return "Welcome to Guru99 Tutorials!"
Step 3) Most hozzon létre egy másik display.py fájlt.
Step 4) A display.py-n belül importálja a moduletest.py fájlt az alábbiak szerint:
import test
Az importálás során nem kell megemlíteni a test.py fájlt, csak a fájl nevét.
Step 5) Ezután meghívhatja a display_message() függvényt a test.py fájlból a display.py-n belül, ehhez a modul_name.function_name függvényt kell használnia.
Például test.display_message().
Import test print(test.display_message())
Step 6) Amikor végrehajtja a display.py fájlt, a következőket kapja output:
Welcome to Guru99 Tutorials!
Osztály importálása Python
Korábban láttunk egy egyszerű modult funkcióval. Itt létrejön egy osztály, és egy másik fájlban hivatkozik az osztályra.
A kód tesztelésének mappaszerkezete a következő:
myproj/ Car.py display.py
Hozzon létre egy Car.py nevű fájlt a következő kóddal:
Fájlnév: Car.py
class Car: brand_name = "BMW" model = "Z4" manu_year = "2020" def __init__(self, brand_name, model, manu_year): self.brand_name = brand_name self.model = model self.manu_year = manu_year def car_details(self): print("Car brand is ", self.brand_name) print("Car model is ", self.model) print("Car manufacture year is ", self.manu_year) def get_Car_brand(self): print("Car brand is ", self.brand_name) def get_Car_model(self): print("Car model is ", self.model)
A Car.py fájlban megtalálhatók a brand_name, model és manu_year attribútumok. Az osztályon belül definiált függvények: car_details(), get_Car_brand(), get_Car_model().
Használjuk most a Car.py fájlt modulként egy másik, display.py nevű fájlban.
Fájlnév: display.py
import Car car_det = Car.Car("BMW","Z5", 2020) print(car_det.brand_name) print(car_det.car_details()) print(car_det.get_Car_brand()) print(car_det.get_Car_model())
output:
BMW Car brand is BMW Car model is Z5 Car manufacture year is 2020 Car brand is BMW Car model is Z5
Így az összes változót és funkciót elérhetjük a Car.py-ból az Car modul segítségével.
Használata innen az importálási modulhoz
A teljes kód importálása helyett a modulnak csak egy kis részét, azaz csak a szükséges függvényeket és változóneveket importálhatja a modulból.
Ha csak bizonyos dolgokat szeretne importálni, használhatja a „from” kulcsszót a kívánt adatok importálásához.
Tehát a szintaxis az
from module import your function_name , variables,... etc.
A kód teszteléséhez használt mappastruktúra a következő:
modtest/ test.py display.py
A test.py fájlban 2 funkció van, amint az látható:
Fájlnév: test.py
defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Most szeretné a display_message() függvényt. Az importált függvény vagy változó közvetlenül elérhető az alábbiak szerint:
Fájlnév: display.py
from test import display_message print(display_message())
output:
Welcome to Guru99 Tutorials!
Ha most a display_message1() függvényt használja, akkor hibaüzenetet küld, hogy a függvény nincs definiálva az alábbiak szerint:
from test import display_message print(display_message1())
output:
Traceback (most recent call last): File "display.py", line 3, in <module> print(display_message1()) Name Error: name 'display_message1' is not defined
Mindent importál a modulból
Az importálás lehetővé teszi a teljes modul importálását az import használatával, majd a modulnévvel, azaz a használni kívánt fájlnévvel vagy könyvtárral.
Syntax:
Import module
Vagy használatával
from module import *
A kód teszteléséhez használt mappastruktúra a következő:
modtest/ test.py display.py
A következő kódrészletek találhatók a test.py-n belül
my_name = "Guru99" my_address = "Mumbai" defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Az import modul használata
A modulnév importálása esetén a modulon belüli változókra és függvényekre hivatkozva előtagként kell szerepelnie a modulnévvel.
Példa
Fájlnév: display.py
Import test print(test.display_message()) print(test.display_message1()) print(test.my_name) print(test.my_address)
A modulnév teszt a modulteszten belüli függvényre és változókra utal.
output:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Az importálás használata *
Lássunk egy példát a használatára import*. használata import*, a függvények és változók közvetlenül elérhetők, amint az az alábbi példában látható:
from test import * print(display_message()) print(display_message1()) print(my_name) print(my_address)
output:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
A dir( ) függvény
A dir() egy beépített függvény a pythonban. A dir() visszaadja az összes tulajdonságot és metódust, beleértve az adott objektum beépített tulajdonságait is.
Tehát amikor a dir()-t használjuk a modulon, akkor megadja a modulon belüli változókat, függvényeket.
Itt van egy működő példa a dir()-re egy modulon. Van egy Car.py nevű osztályunk, importáljuk az autót, és hozzárendeljük a dir()-hez, hogy lássuk a kimenetet.
A kód tesztelésének mappaszerkezete a következő lesz:
test prop/ Car.py test.py
Fájlnév: Car.py
class Car: brand_name = "BMW" model = "Z4" manu_year = "2020" def __init__(self, brand_name, model, manu_year): self.brand_name = brand_name self.model = model self.manu_year = manu_year def car_details(self): print("Car brand is ", self.brand_name) print("Car model is ", self.model) print("Car manufacture year is ", self.manu_year) def get_Car_brand(self): print("Car brand is ", self.brand_name) def get_Car_model(self): print("Car model is ", self.model)
Fájlnév: test.py
import Car class_contents = dir(Car) print(class_contents)
A kimenet megadja az osztály nevét és a Car.py-ben meghatározott összes függvényt.
Megpróbálhatja a dir() használatát is egy beépített modulon, amely elérhető Python. Próbáljuk meg ugyanezt json modult az alábbi példában látható módon. Megjeleníti az összes elérhető tulajdonságot és metódust json modult.
Import json json_details = dir(json) print(json_details)
output:
['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__bu iltins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__pac kage__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_en coder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'loa d', 'loads', 'scanner']
Csomagok
A csomag egy könyvtár, amelyben minden modul definiálva van. Ahhoz, hogy a Python Az interpreter csomagként kezeli, a könyvtárában az init.pyfile fájlnak kell lennie. Az init.py csomagként teszi a könyvtárat. Íme a csomag elrendezése, amelyen dolgozni fogunk.
A csomag neve a csomagom. A csomaggal való munka megkezdéséhez hozzon létre egy package/ nevű könyvtárat. A könyvtárban hozzon létre egy üres fájlt __init__.py néven. Hozzon létre 3 további fájlt: module1.py, module2.py és module3.py, és határozza meg a funkciókat a képernyőképen látható módon. Itt találhatók a module1.py, module2.py és module3.py részletei
module1.py
def mod1_func1(): print("Welcome to Module1 function1") def mod1_func2(): print("Welcome to Module1 function2") def mod1_func3(): print("Welcome to Module1 function3")
module2.py
def mod2_func1(): print("Welcome to Module2 function1") def mod2_func2(): print("Welcome to Module2 function2") def mod2_func3(): print("Welcome to Module2 function3")
module3.py
def mod3_func1(): print("Welcome to Module3 function1") def mod3_func2(): print("Welcome to Module3 function2") def mod3_func3(): print("Welcome to Module3 function3")
A csomaghasználatra kész. Most hívja meg a csomagot bármelyik fájlban az alábbiak szerint: test.py:
Itt a mypackage.module1 importálásra kerül, és álnevet kap mod1. Hasonlóképpen használhatja a csomagomban található module2.py és module3.py modulokat is.
import mypackage.module1 as mod1 print(mod1.mod1_func1()) print(mod1.mod1_func2()) print(mod1.mod1_func2())
output:
Welcome to Module1 function1 None Welcome to Module1 function2 None Welcome to Module1 function2 None
Most mutattuk be a csomagot egy egyszerű modullal, benne funkciókkal. A projektnek megfelelően csomagolhat alcsomagokat is. Almappák/ amelyekben modulok vannak meghatározott osztályokkal.
Python Modul keresési útvonala
A végrehajtás során, amikor a python találkozik import modul neve, a tolmács megpróbálja megtalálni a modult. Megkeresi a modult a beépített modullistában. Later összességében a sys.path belül meghatározott könyvtárak.
Összefoglalva, a tolmács a következő keresést hajtja végre a modul megkereséséhez:
- Az aktuális könyvtárban.
- A beépített modulok listájában
- A sys.path könyvtárakon belül
A sys.path részleteit a sys modul importálásával és a sys.path kinyomtatásával érheti el. Megadja a könyvtárak listáját az alábbiak szerint:
importsys print(sys.path)
output:
['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\ \Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\P ython37\\DLLs']
Módosíthatja az elérési utat és megtarthatja a könyvtárakat az igényei szerint.
Modulálnév használata az importálás során
A modulnevet rövidebb formára is konvertálhatja, ha álnevet ad neki. Az aliast a kulcsszó használatával lehet megadni.
Syntax:
import filename as alias name
A kód tesztelésének mappaszerkezete a következő lesz:
Mod test/ test.py display.py
A következő a test.py-n belüli kód
my_name = "Guru99" my_address = "Mumbai" def display_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Most egy álnevet fog használni a test.py fájlhoz a display.py fájlban
Import test as t print(t.display_message()) print(t.display_message1()) print(t.my_name) print(t.my_address)
A tesztmodulhoz használt álnév: t. Tehát a test.py függvény és változók a t álnévvel hivatkozhatók.
output:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Abszolút és relatív import Python
Most már tudja, hogyan importálhat egy fájlt modulként egy másik fájlba. Lássuk most, hogyan kezeljük a mappákban elérhető fájlokat. A mappákban lévő fájlok abszolút vagy relatív importálással importálhatók.
Vegye figyelembe, hogy rendelkezik a projektmappa szerkezetével, az alábbiak szerint:
A gyökérmappa a projektem/. Két almappája van: package1 és package2.
A csomag1 mappa két modulból áll, a module1.py és module2.py modulból.
A csomag2 mappában egy myclass.py osztály, egy alcsomag subpkg module3.py és utolsó module4.py található.
- A module1.py fájlban van egy myfunc1 nevű függvény.
- A module2.py fájlban van egy myfunc2 nevű függvény.
- A module3.py fájlban van egy myfunc3 nevű függvény.
- A module4.py fájlban van egy myfunc4 nevű függvény.
Az abszolút import használata
Az abszolút importáláshoz hozzá kell adnia a modul teljes elérési útját közvetlenül a projekt gyökérmappájából.
Lássuk most, hogyan használhatjuk fel az abszolút importálást az egyes modulokban jelenlévő függvények hivatkozására.
A functionmyfunc1 használatához az alábbiak szerint kell importálnia:
from package1.module1 import myfunc1 or from package1 import module1 module1.myfunc1()
A myfunc3 függvénnyel való együttműködéshez az alábbiak szerint kell importálnia:
from package1.subpkg.module3 import myfunc3 or from package1.subpkg import module3 module3.myfunc3()
Az abszolút import használatának előnyei és hátrányai
Íme az abszolút import használatának előnyei:
- Könnyűvé válik a modulok visszakövetése kódellenőrzés céljából.
- Könnyen használható és nagyon egyszerű.
- Ha a projektet másik útvonalra helyezik át, az importálás továbbra is ugyanaz marad.
Az abszolút import használatának hátrányai
Íme, az abszolút import használatának hátrányai:
Hátrányok:
- Az importálási útvonal nagyon hosszú lehet abban az esetben, ha a modulok egymásba vannak ágyazva, és ha a modulok neve hosszú.
Relatív import használata
Figyelembe véve az alábbiakban említett ugyanazt a mappastruktúrát, látni fogjuk, hogyan importálhatjuk ugyanazt a relatív importálás segítségével.
A relatív importálás során az importálandó modul az aktuális helyhez viszonyítva van, amely az a hely, ahol az importálási utasítás található.
Szintaxis
A relatív importálásnál egy pontot (.) kell hozzáadnia a modul neve elé, amikor a segítségével importál ból ből.
2 pont (..) lesz a modul neve előtt, ha a modul az aktuális helyhez képest egy szinttel feljebb van.
A fent említett mappaszerkezeti ábrára hivatkozva az alábbi modulok vannak a funkciójukkal, amelyekre hivatkoznunk kell.
- A module1.py fájlban van egy myfunc1 nevű függvény.
- A module2.py fájlban van egy myfunc2 nevű függvény.
- A module3.py fájlban van egy myfunc3 nevű függvény.
- A module4.py fájlban van egy myfunc4 nevű függvény.
A functionmyfunc1 használatához az alábbiak szerint kell importálnia:
from .module1 import myfunc1
A myfunc3 függvénnyel való együttműködéshez az alábbiak szerint kell importálnia:
from .subpkg.module3 import myfunc3
A relatív import előnyei
Előnyök:
- A relatív importtal könnyű dolgozni.
- A jelenlegi helyről az import az abszolút importhoz képest lerövidíthető.
A relatív import hátrányai
Hátrányok:
- Relatív importálást használva nehéz visszakövetni, hol található a kód
Összegzésként
- Importálás be Python segít hivatkozni a kódra, azaz egy másik fájlba írt .függvényekre/objektumokra. A pip(python csomagkezelő) segítségével telepített python-könyvtárak/-csomagok importálására is használható, és ezt követően használnia kell a kódban.
- Az importálási funkció más nyelveken is elérhető, például gépírással, JavaSzkript, java, rubin stb.
- A python modul például a fájlba írt kód (test.py). A fájlon belül megadhatja a változókat, függvényeket vagy osztályokat. A teljes fájl modullá válik, és egy másik fájlba importálható a kódra hivatkozva.
- A modulfunkciókkal a kódot különböző fájlokra bonthatja, ahelyett, hogy mindent egy fájlba írna. Later, az import segítségével hivatkozhat a szükséges fájlban lévő kódra.
- Python beépített moduljait, valamint külső könyvtárait/csomagjait a python csomagkezelő (pip), pl. a pandákat, a NumPy-t stb. moduloknak nevezzük.
- A modulnak csak egy kis részét, azaz csak a szükséges függvényeket és változóneveket importálhatja a modulból a teljes kód importálása helyett.
- A modulnevet rövidebb formára is konvertálhatja, ha álnevet ad neki. Az aliast a kulcsszó használatával lehet megadni.
- A csomag egy könyvtár, amelyben minden modul definiálva van. Ahhoz, hogy a Python Az interpreter csomagként kezeli, a könyvtárában a __init.pyfile fájlnak kell lennie. Az init.py csomagként teszi a könyvtárat. Íme a csomag elrendezése, amelyen dolgozni fogunk.
- A végrehajtás során, amikor a python találkozik import modul neve, a tolmács megpróbálja megtalálni a modult. Megkeresi a modult a beépített modullistában. Later összességében a sys.path belül meghatározott könyvtárak.
- Az abszolút importáláshoz hozzá kell adnia a modul teljes elérési útját közvetlenül a projekt gyökérmappájából.
- A relatív importálás során az importálandó modul az aktuális helyhez viszonyítva van, amely az a hely, ahol az importálási utasítás található.