Modul importálása a Python-ban példákkal

Tartalomjegyzék:

Anonim

Melyek a Python moduljai?

A modul egy fájl, Python kóddal. A kód lehet változók, függvények vagy meghatározott osztályok formájában. A fájlnév lesz a modul neve.

Például, ha a fájlneved guru99.py, akkor a modul neve guru99 lesz . A modul funkcionalitásával különböző kódokra bonthatja a kódot ahelyett, hogy mindent egy fájlba írna.

Ebben az oktatóanyagban megtudhatja:

  • Melyek a Python moduljai?
  • Python import modul
  • Hogyan lehet modult létrehozni és importálni a Pythonban?
  • Osztály importálása Pythonba
  • A -tól a modul importálásáig
  • Minden importálása a modulból
  • Az importáló modul használata
  • Az importálás használata *
  • A dir () függvény
  • Csomagok
  • PythonModuleSearchPath
  • A modul álnevének használata az importálás során
  • Abszolút és relatív import a Pythonban
  • Az AbsoluteImports használata
  • RelativeImports használata

Mi az a Python import modul?

A fájl modulnak tekinthető a pythonban. A modul használatához importálnia kell az import kulcsszóval. A fájlban található függvény vagy változók egy másik fájlban használhatók a modul importálásával. Ez a funkció más nyelveken érhető el, például gépírás, JavaScript, java, rubin stb.

Hogyan lehet modult létrehozni és importálni a Pythonban?

Most létrehozunk egy modult, és importáljuk egy másik fájlba.

Itt látható a modul létrehozásának és importálásának folyamata a képernyőképen:

Kövesse a megadott lépéseket a modul létrehozásához a pythonban.

A kód teszteléséhez használt mappaszerkezet a következő:

modtest/test.pydisplay.py

1. lépés: Hozzon létre egy fájlt, és nevezze el a test.py fájlnak

2. lépés: A test.py oldalon hozzon létre egy display_message () nevű függvényt

Def display_message():return "Welcome to Guru99 Tutorials!"

3. lépés: Most hozzon létre egy másik fájlt display.py.

4. lépés: Az display.py oldalon importálja a moduletest.py fájlt az alábbiak szerint:

import test

Az importálás során nem a test.py-t kell megemlítenie, hanem csak a fájl nevét kell megemlítenie.

5. lépés)

Ezután meghívhatja a display_message () függvényt a test.py oldalon a display.py oldalon, és ki kell használnia a module_name.function_name nevet.

Például test.display_message ().

Import testprint(test.display_message())

6. lépés)

A display.py futtatásakor a következő kimenetet kapja:

Welcome to Guru99 Tutorials!

Osztály importálása Pythonba

Korábban láttunk egy egyszerű modult egy funkcióval. Itt létrehoz egy osztályt, és egy másik fájlba utalja az osztályt.

A kód teszteléséhez a mappaszerkezet a következő:

myproj/Car.pydisplay.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_nameself.model = modelself.manu_year = manu_yeardef 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 a manu_year attribútumok. Az osztályon belül definiált függvények: car_details (), get_Car_brand (), get_Car_model ().

Most használjuk a Car.py fájlt modulként egy másik fájlban, amelyet display.py néven nevezünk.

Fájlnév: display.py

import Carcar_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())

Kimenet:

BMWCar brand is BMWCar model is Z5Car manufacture year is 2020Car brand is BMWCar model is Z5

Tehát az összes változóhoz és funkcióhoz hozzáférhetünk a Car.py oldalról a Car modul használatával.

A -tól a modul importálásáig

A modulból csak egy kis részt, 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.

Ha csak meghatározott dolgokat szeretne importálni, akkor a "from" kulcsszóval importálhatja a kívánt terméket.

Tehát a szintaxis az

from module import your function_name , variables,… etc.

A kód teszteléséhez használt mappaszerkezet a következő:

modtest/test.pydisplay.py

A test.py fájlban 2 funkció van, az alábbiak szerint:

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_messageprint(display_message())

Kimenet:

Welcome to Guru99 Tutorials!

Most, ha véletlenül a display_message1 () függvényt használja, hibaüzenetet eredményez, hogy a függvény nincs definiálva az alábbiak szerint:

from test import display_messageprint(display_message1())

Kimenet:

Traceback (most recent call last):File "display.py", line 3, in print(display_message1())Name Error: name 'display_message1' is not defined

Minden importálása a modulból

Az Import lehetővé teszi a teljes modul importálását az import, majd a modul neve, azaz a használni kívánt fájlnév vagy könyvtár használatával.

Szintaxis:

Import module

Vagy a használatával

from module import *

A kód teszteléséhez használt mappaszerkezet a következő:

modtest/test.pydisplay.py

Az alábbiakban a kód részletei találhatók a test.py oldalon

my_name = "Guru99"my_address = "Mumbai"defdisplay_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"

Az importáló modul használata

Csak a modul nevének importálásával, a modulon belüli változókra és függvényekre való hivatkozáshoz előtaggal kell ellátnia a modul nevét.

Példa

Fájlnév: display.py

Import testprint(test.display_message())print(test.display_message1())print(test.my_name)print(test.my_address)

A modulnév teszt a modul tesztjének funkcióira és változóira utal.

Kimenet:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Az importálás használata *

Nézzünk meg egy példát az import * használatával . Az importálás * használatával 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)

Kimenet:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

A dir () függvény

A dir () a Python beépített funkciója. 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 () modult használja, megadja a modulban található változókat, függvényeket.

Itt van egy működő példa a dir () modulra. Van egy Car.py nevű osztályunk, importáljuk a Car-ot és rendeljük hozzá a dir () -hez, hogy lássuk a kimenetet.

A kód teszteléséhez a mappaszerkezet a következő lesz:

test prop/Car.pytest.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_nameself.model = modelself.manu_year = manu_yeardef 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 Carclass_contents = dir(Car)print(class_contents)

A kimenet megadja az osztály nevét és a Car.py-ben definiált összes funkciót.

Megpróbálhatja a dir () használatát a Pythonban elérhető beépített modulon is. Próbáljuk meg ugyanazt a json modulon, mint az alábbi példában látható. Megjeleníti a json modulban elérhető összes tulajdonságot és módszert .

Import jsonjson_details = dir(json)print(json_details)

Kimenet:

['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_encoder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']

Csomagok

A csomag egy könyvtár, amelyben az összes modul meg van határozva. Ahhoz, hogy a Python tolmács csomagként kezelje, a könyvtárnak rendelkeznie kell az init.pyfile fájllal. Az init.py csomagként készíti el a könyvtárat. Itt van a csomag elrendezése, amelyen dolgozni fogunk.

A csomag neve az én 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 további 3 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 modul1.py, modul2.py és modul3.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 csomag használatra kész. Most hívja meg a csomagot bármelyik fájljában, az alábbiak szerint: test.py:

Itt importálja a mypackage.module1 fájlt, és alias nevet kap mod1 néven. Hasonlóképpen használhat más modul2.py és module3.py csomagokat is.

import mypackage.module1 as mod1print(mod1.mod1_func1())print(mod1.mod1_func2())print(mod1.mod1_func2())

Kimenet:

Welcome to Module1 function1NoneWelcome to Module1 function2NoneWelcome to Module1 function2None

Most bemutattuk a csomagot egy egyszerű modullal, benne funkciókkal. A projektnek megfelelően csomagolhat alcsomagokkal is. Almappák / modulokkal rendelkező osztályokkal.

Python modul keresési útvonala

A végrehajtás során, amikor a python találkozik az importáló modul nevével , az értelmező megpróbálja megkeresni a modult. Megkeresi a modult a beépített modullistában. Később a könyvtárak a sys.path belsejében definiáltak.

Összefoglalva: a tolmács a következő kereséssel keresi meg a modult:

  1. Az aktuális könyvtárban.
  2. Be a beépített modullistában
  3. A sys.path könyvtárak belsejében

A sys.path részleteit a sys modul importálásával szerezheti be, és kinyomtathatja a sys.path fájlt. Ez megadja az alábbi könyvtárak listáját:

importsysprint(sys.path)

Kimenet:

['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\DLLs']

Módosíthatja az elérési utat és megtarthatja a könyvtárakat az Ön igényei szerint.

A modul álnevének használata az importálás során

Átalakíthatja a modul nevét rövidebbre is, ha álnevet ad neki. Az álnevet a kulcsszóval lehet megtenni.

Szintaxis:

import filename as alias name

A kód teszteléséhez a mappaszerkezet a következő lesz:

Mod test/test.pydisplay.py

Az alábbiakban a test.py fájlban található kód található

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 számára a display.py fájlban

Import test as tprint(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énye és változói a t álnév segítségével hivatkozhatók.

Kimenet:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Abszolút és relatív import a Pythonban

Most már tudja, hogyan importálhat egy fájlt modulként egy másik fájlba. Nézzük meg, hogyan kezelhetjük a mappákban elérhető fájlokat. A mappákban lévő fájlok importálhatók abszolút vagy relatív importálás segítségével.

Fontolja meg, hogy rendelkezik a projekt mappájának felépítésével, az alábbiak szerint:

A gyökér mappa a projektem /. Két almappájával rendelkezik a package1 és a package2.

A package1 mappának két modulja van: module1.py és module2.py.

A package2 mappának egy osztálya van a myclass.py, egy alcsomag subpkg a module3.py-vel és az utolsó module4.py.

  • A module1.py fájlban van egy functioncalledmyfunc1.
  • A module2.py fájlban van egy functioncalledmyfunc2.
  • A module3.py fájlban van egy functioncalledmyfunc3.
  • A module4.py fájlban van egy functioncalledmyfunc4.

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.

Most nézzük meg, hogyan lehet felhasználni az abszolút importot az egyes modulokban található funkciókra.

A functionmyfunc1 funkció használatához az alábbiak szerint kell importálnia:

from package1.module1 import myfunc1orfrom package1 import module1module1.myfunc1()

A myfunc3 függvény használatához az alábbiak szerint kell importálnia:

from package1.subpkg.module3 import myfunc3orfrom package1.subpkg import module3module3.myfunc3()

Az abszolút behozatal előnyei és hátrányai

Az abszolút behozatal előnyei:

  • Könnyűvé válik a modulok visszakeresése a kódellenőrzéshez.
  • Könnyen használható és nagyon egyszerű.
  • Ha a projektet más pályára helyezik, akkor az import továbbra is ugyanaz marad.

Az abszolút behozatal hátrányai

Itt vannak az abszolút import használatának hátrányai:

Hátrányok:

  • Az import útja esetenként nagyon hosszú lehet, a modulok be vannak ágyazva, és ha a modulok neve hosszú.

Relatív import használata

Figyelembe véve az alább említett mappastruktúrát, meglátjuk, hogyan lehet ugyanezt importálni relatív importálás segítségével.

Relatív importáláskor az importálandó modul az aktuális helyhez viszonyítva van, ahol az importálási utasítás található.

Szintaxis:

A relatív import, akkor kell hozzá egy pontot (.), Mielőtt a modul neve, ha az importáló használatával re .

2 pont lesz (…) a modul neve előtt, ha a modul egy szinttel feljebb van az aktuális helytől.

A mappaszerkezet fent említett ábrájára hivatkozva a következő modulok vannak a funkcióikkal, amelyekre utalnunk kell.

  • A module1.py fájlban van egy functioncalledmyfunc1.
  • A module2.py fájlban van egy functioncalledmyfunc2.
  • A module3.py fájlban van egy functioncalledmyfunc3.
  • A module4.py fájlban van egy functioncalledmyfunc4.

A functionmyfunc1 funkció használatához az alábbiak szerint kell importálnia:

from .module1 import myfunc1

A myfunc3 függvény használatához az alábbiak szerint kell importálnia:

from .subpkg.module3 import myfunc3

A relatív import előnyei

Előnyök:

  • Relatív importtal könnyű dolgozni.
  • A jelenlegi helyről az import rövidülhet az abszolút importhoz képest.

A relatív behozatal hátrányai

Hátrányok:

  • A relatív import használatával nehéz visszavezetni a kód tartózkodási helyét

Összegzés:

  • Az importálás a Pythonban segít hivatkozni a kódra, azaz egy másik fájlba írt .functions / objektumokra. A pip (python csomagkezelő) segítségével telepített python könyvtárak / csomagok importálásához is használatos, és ezt a kódban kell használnia.
  • Az importálás más nyelveken is elérhető, például gépírás, JavaScript, java, rubin stb.
  • A modul a python, a fájlba írt kód, például (test.py). A fájlban megadhatja a változókat, a függvényeket vagy az osztályt. A teljes fájl modulrá válik, és egy másik fájlba importálható a kódra hivatkozva.
  • A modul funkcionalitásával különböző kódokra bonthatja a kódot ahelyett, hogy mindent egy fájlba írna. Később az importálás segítségével hivatkozhat a szükséges fájl belsejében található kódra.
  • A Python beépített moduljaival rendelkezik, és a python csomagkezelő (pip) segítségével telepített külső könyvtárakra / csomagokra is, pl. Pandákra, NumPy-kre stb.
  • A modulból csak egy kis részt, 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.
  • Átalakíthatja a modul nevét rövidebbre is, ha álnevet ad neki. Az álnevet a kulcsszóval lehet megtenni.
  • A csomag egy könyvtár, amelyben az összes modul meg van határozva. Ahhoz, hogy a Python tolmács csomagként kezelje, a könyvtárnak rendelkeznie kell a __init.pyfile-vel. Az init.py csomagként készíti el a könyvtárat. Itt van a csomag elrendezése, amelyen dolgozni fogunk.
  • A végrehajtás során, amikor a python találkozik az importáló modul nevével , az értelmező megpróbálja megkeresni a modult. Megkeresi a modult a beépített modullistában. Később a könyvtárak a sys.path belsejében definiáltak.
  • 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.
  • Relatív importáláskor az importálandó modul az aktuális helyhez viszonyítva van, ahol az importálási utasítás található.