Uvezi modul u Python s Primjerima
U čemu se nalaze moduli Python?
Modul je datoteka s python kodom. Kod može biti u obliku varijabli, funkcija ili definirane klase. Naziv datoteke postaje naziv modula.
Na primjer, ako je naziv vaše datoteke guru99.py, naziv modula bit će guru99. S funkcionalnošću modula, možete rastaviti svoj kod na različite datoteke umjesto da sve pišete unutar jedne datoteke.
Što je Python uvozni modul?
Datoteka se u pythonu smatra modulom. Da biste koristili modul, morate ga uvesti pomoću uvoz ključna riječ. Funkcija ili varijable prisutne unutar datoteke mogu se koristiti u drugoj datoteci uvozom modula. Ova je funkcija dostupna na drugim jezicima, poput pisaćeg teksta, JavaSkripta, java, ruby itd.
Kako izraditi i uvesti modul Python?
Sada ćemo izraditi modul i uvesti ga u drugu datoteku.
Evo tijeka za izradu i uvoz modula kao što je prikazano na snimci zaslona:
Slijedite navedene korake za izradu modula u pythonu.
Struktura mape koja se koristi za testiranje koda je sljedeća:
modtest/ test.py display.py
Korak 1) Napravite datoteku i nazovite je test.py
Korak 2) Unutar test.py stvorite funkciju pod nazivom display_message()
Def display_message(): return "Welcome to Guru99 Tutorials!"
Korak 3) Sada stvorite drugu datoteku display.py.
Korak 4) Unutar display.py uvezite datoteku moduletest.py, kao što je prikazano u nastavku:
import test
Prilikom uvoza ne morate spominjati test.py već samo naziv datoteke.
Korak 5) Zatim možete pozvati funkciju display_message() iz test.py unutar display.py, morate koristiti module_name.function_name.
Na primjer test.display_message().
Import test print(test.display_message())
Korak 6) Kada izvršite display.py, dobit ćete sljedeće Izlaz:
Welcome to Guru99 Tutorials!
Uvoz razreda Python
Ranije smo vidjeli jednostavan modul s funkcijom. Ovdje će se stvoriti klasa i uputiti je u drugu datoteku.
Struktura mape za testiranje koda je sljedeća:
myproj/ Car.py display.py
Napravite datoteku pod nazivom Car.py sa sljedećim kodom:
Naziv datoteke: 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)
U datoteci Car.py postoje atributi brand_name, model i manu_year. Funkcije definirane unutar klase su car_details(), get_Car_brand(), get_Car_model().
Iskoristimo sada datoteku Car.py kao modul u drugoj datoteci pod nazivom display.py.
Naziv datoteke: 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())
Izlaz:
BMW Car brand is BMW Car model is Z5 Car manufacture year is 2020 Car brand is BMW Car model is Z5
Dakle, možemo pristupiti svim varijablama i funkcijama iz Car.py koristeći modul Car.
Korištenje modula from to import
Možete uvesti samo mali dio modula, tj. samo potrebne funkcije i imena varijabli iz modula umjesto uvoza cijelog koda.
Kada želite da se uvezu samo određene stvari, možete koristiti ključnu riječ "from" za uvoz onoga što želite.
Dakle, sintaksa je
from module import your function_name , variables,... etc.
Struktura mape koja se koristi za testiranje koda je sljedeća:
modtest/ test.py display.py
U test.py postoje 2 funkcije kao što je prikazano:
Naziv datoteke: test.py
defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Sada želite funkciju display_message(). Funkciji ili varijabli koju uvozite može se izravno pristupiti kao što je prikazano u nastavku:
Naziv datoteke: display.py
from test import display_message print(display_message())
Izlaz:
Welcome to Guru99 Tutorials!
Sada ako slučajno koristite funkciju display_message1(), izbacit će pogrešku da funkcija nije definirana kao što je prikazano u nastavku:
from test import display_message print(display_message1())
Izlaz:
Traceback (most recent call last): File "display.py", line 3, in <module> print(display_message1()) Name Error: name 'display_message1' is not defined
Uvoz svega iz modula
Import vam omogućuje uvoz cijelog modula korištenjem importa iza kojeg slijedi naziv modula, tj. naziv datoteke ili biblioteke koja će se koristiti.
Sintaksa:
Import module
Ili korištenjem
from module import *
Struktura mape koja se koristi za testiranje koda je sljedeća:
modtest/ test.py display.py
Slijede detalji koda unutar test.py
my_name = "Guru99" my_address = "Mumbai" defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Korištenje modula za uvoz
Koristeći naziv samo uvoznog modula, za upućivanje na varijable i funkcije unutar modula, mora imati prefiks s nazivom modula.
Primjer
Naziv datoteke: display.py
Import test print(test.display_message()) print(test.display_message1()) print(test.my_name) print(test.my_address)
Test naziva modula koristi se za upućivanje na funkciju i varijable unutar testa modula.
Izlaz:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Korištenje uvoza *
Pogledajmo primjer pomoću uvoz *, koristeći uvoz *, funkcije i varijable su izravno dostupne, kao što je prikazano u primjeru u nastavku:
from test import * print(display_message()) print(display_message1()) print(my_name) print(my_address)
Izlaz:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Funkcija dir().
Dir() je ugrađena funkcija u python. Dir() vraća sva svojstva i metode, uključujući ugrađena svojstva zadanog objekta.
Dakle, kada se dir() koristi na modulu, on će vam dati varijable, funkcije koje su prisutne unutar modula.
Ovdje je radni primjer dir() na modulu. Imamo klasu koja se zove Car.py, uvezimo Car i dodijelimo dir() da vidimo izlaz.
Struktura mape za testiranje koda bit će sljedeća:
test prop/ Car.py test.py
Naziv datoteke: 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)
Naziv datoteke: test.py
import Car class_contents = dir(Car) print(class_contents)
Izlaz nam daje naziv klase i sve funkcije definirane u Car.py.
Također možete pokušati koristiti dir() na ugrađenom modulu dostupnom u Python. Hajde da probamo isto JSON modul kao što je prikazano u primjeru u nastavku. Prikazat će sva svojstva i metode dostupne u JSON modul.
Import json json_details = dir(json) print(json_details)
Izlaz:
['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']
Paketi
Paket je direktorij sa svim definiranim modulima unutar njega. Za izradu a Python interpreter tretira kao paket, vaš direktorij bi trebao imati init.pyfile. Init.py čini imenik kao paket. Ovdje je izgled paketa na kojem ćemo raditi.
Naziv paketa je moj paket. Za početak rada s paketom kreirajte direktorij pod nazivom package/. Unutar direktorija stvorite praznu datoteku pod nazivom __init__.py. Napravite još 3 datoteke module1.py, module2.py i module3.py i definirajte funkcije kao što je prikazano na snimci zaslona. Ovdje su detalji o module1.py,module2.py i module3.py
modul1.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")
modul2.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")
modul3.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")
The paketspreman je za upotrebu. Sada pozovite paket unutar bilo koje datoteke kao što je prikazano u nastavku :test.py:
Ovdje se mypackage.module1 uvozi i dobiva pseudonim kao mod1. Slično, možete koristiti druge module module2.py i module3.py iz mog paketa.
import mypackage.module1 as mod1 print(mod1.mod1_func1()) print(mod1.mod1_func2()) print(mod1.mod1_func2())
Izlaz:
Welcome to Module1 function1 None Welcome to Module1 function2 None Welcome to Module1 function2 None
Upravo smo demonstrirali paket s jednostavnim modulom s funkcijama unutar njega. Prema vašem projektu, također možete pakirati s pod-paketima. Podmape/s modulima s definiranim klasama.
Python Put traženja modula
Tijekom izvođenja, kada naiđe python naziv modula uvoza, prevoditelj pokušava locirati modul. Pretražuje modul na popisu ugrađenih modula. Later u svemu, direktoriji definirani unutar sys.path.
Ukratko, tumač radi sljedeću pretragu kako bi locirao modul:
- U vašem trenutnom imeniku.
- U popisu ugrađenih modula
- Unutar direktorija sys.path
Detalje sys.path-a možete dobiti uvozom sys modula i ispisom sys.path-a. Dat će vam popis direktorija kao što je prikazano u nastavku:
importsys print(sys.path)
Izlaz:
['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\ \Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\P ython37\\DLLs']
Također možete promijeniti putanju i zadržati direktorije prema svojim zahtjevima.
Korištenje pseudonima modula u uvozu
Također možete pretvoriti naziv modula u kraći oblik tako da mu date pseudonim. Alias se može napraviti pomoću ključne riječi.
Sintaksa:
import filename as alias name
Struktura mape za testiranje koda bit će sljedeća:
Mod test/ test.py display.py
Slijedi kod unutar test.py
my_name = "Guru99" my_address = "Mumbai" def display_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Sada će koristiti alias za test.py u display.py
Import test as t print(t.display_message()) print(t.display_message1()) print(t.my_name) print(t.my_address)
Pseudonim koji se koristi za testni modul je t. Dakle, funkcija i varijable iz test.py mogu se referirati pomoću aliasa t.
Izlaz:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Apsolutni i relativni uvoz u Python
Sada znate kako uvesti datoteku kao modul unutar druge datoteke. Pogledajmo sada kako upravljati datotekama dostupnim u mapama. Datoteke u mapama mogu se uvesti pomoću apsolutnog ili relativnog uvoza.
Smatrajte da imate strukturu mape projekta, kao što je prikazano u nastavku:
Korijenska mapa je moj projekt/. Ima dvije podmape package1 i package2.
Mapa package1 ima dva modula, module1.py i modul2.py.
Mapa package2 ima jednu klasu myclass.py, podpaket subpkg s module3.py i posljednji module4.py.
- U module1.py postoji funkcija koja se zove myfunc1.
- U module2.py postoji funkcija koja se zove myfunc2.
- U module3.py postoji funkcija koja se zove myfunc3.
- U module4.py postoji funkcija koja se zove myfunc4.
Korištenje apsolutnog uvoza
Za apsolutni uvoz morate dodati cijeli put svog modula izravno iz korijenske mape projekta.
Pogledajmo sada kako iskoristiti apsolutne uvoze za upućivanje na funkcije prisutne u svakom od modula.
Za rad s funkcijommyfunc1 morat ćete uvesti sljedeće:
from package1.module1 import myfunc1 or from package1 import module1 module1.myfunc1()
Za rad s funkcijom myfunc3 morat ćete izvršiti uvoz na sljedeći način:
from package1.subpkg.module3 import myfunc3 or from package1.subpkg import module3 module3.myfunc3()
Prednosti i nedostaci korištenja apsolutnog uvoza
Evo prednosti korištenja apsolutnog uvoza:
- Postaje lako pratiti module za provjeru koda.
- Jednostavan za korištenje i vrlo jednostavan.
- Ako se projekt premjesti na drugu putanju, uvozi će i dalje ostati isti.
Nedostaci korištenja apsolutnog uvoza
Evo nedostataka korištenja apsolutnog uvoza:
Nedostaci:
- Put uvoza može biti jako dug u slučaju da su moduli ugniježđeni i ako je naziv modula dugačak.
Korištenje relativnih uvoza
Uzimajući u obzir istu strukturu mapa spomenutu u nastavku, vidjet ćemo kako je uvesti pomoću relativnog uvoza.
U relativnom uvozu, modul koji se uvozi je relativan u odnosu na trenutnu lokaciju koja je lokacija na kojoj je prisutna izjava uvoza.
Sintaksa
U relativnom uvozu morate dodati točku (.) ispred naziva modula kada uvozite pomoću iz.
Bit će 2 točke (..) ispred naziva modula ako je modul na razini više od trenutne lokacije.
Pozivajući se na gore spomenutu sliku strukture mape, imamo sljedeće module s njihovom funkcijom na koje se moramo pozvati.
- U module1.py postoji funkcija koja se zove myfunc1.
- U module2.py postoji funkcija koja se zove myfunc2.
- U module3.py postoji funkcija koja se zove myfunc3.
- U module4.py postoji funkcija koja se zove myfunc4.
Za rad s funkcijommyfunc1 morat ćete izvršiti uvoz na sljedeći način:
from .module1 import myfunc1
Da biste radili s funkcijom myfunc3, morat ćete izvršiti uvoz na sljedeći način:
from .subpkg.module3 import myfunc3
Prednosti relativnog uvoza
Prednosti:
- Lako je raditi s relativnim uvozom.
- S trenutne lokacije, uvozi se mogu skratiti u usporedbi s apsolutnim uvozima.
Nedostaci relativnog uvoza
Nedostaci:
- Koristeći relativne uvoze, teško je ući u trag gdje se kôd nalazi
rezime
- Uvezi u Python pomaže vam u referiranju na kod, tj. .funkcije/objekte koji su napisani u drugoj datoteci. Također se koristi za uvoz python biblioteka/paketa koji su instalirani pomoću pip-a (python package manager), a zatim ih morate koristiti u svom kodu.
- Funkcija uvoza dostupna je na drugim jezicima kao što su pisaći tekst, JavaSkripta, java, ruby itd.
- Modul je python kod napisan unutar datoteke, na primjer (test.py). U svojoj datoteci možete definirati svoje varijable, funkcije ili klasu. Cijela datoteka postaje modul i može se uvesti u drugu datoteku za referencu koda.
- S funkcionalnošću modula, možete rastaviti svoj kod na različite datoteke umjesto da sve pišete unutar jedne datoteke. Later, koristeći import, možete se pozvati na kod unutar datoteke koja vam je potrebna.
- Python ima svoje ugrađene module, a također i vanjske biblioteke/pakete instalirane pomoću a python upravitelj paketa (pip), npr. pande, NumPy itd. nazivaju se modulima.
- Možete uvesti samo mali dio modula, tj. samo potrebne funkcije i imena varijabli iz modula umjesto uvoza cijelog koda.
- Također možete pretvoriti naziv modula u kraći oblik tako da mu date pseudonim. Alias se može napraviti pomoću ključne riječi.
- Paket je direktorij sa svim definiranim modulima unutar njega. Za izradu a Python interpreter tretira kao paket, vaš direktorij bi trebao imati __init.pyfile. Init.py čini imenik kao paket. Ovdje je izgled paketa na kojem ćemo raditi.
- Tijekom izvođenja, kada naiđe python naziv modula uvoza, prevoditelj pokušava locirati modul. Pretražuje modul na popisu ugrađenih modula. Later u svemu, direktoriji definirani unutar sys.path.
- Za apsolutni uvoz morate dodati cijeli put svog modula izravno iz korijenske mape projekta.
- U relativnom uvozu, modul koji se uvozi je relativan u odnosu na trenutnu lokaciju koja je lokacija na kojoj je prisutna izjava uvoza.