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:

Modul létrehozása és importálása Python

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.

Csomagok be Python

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:

  1. Az aktuális könyvtárban.
  2. A beépített modulok listájában
  3. 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:

Abszolút és relatív import Python

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ó.