Uvezi modul u Python s Primjerima
⚡ Pametni sažetak
Uvezi u Python omogućuje jednoj datoteci ponovnu upotrebu varijabli, funkcija i klasa definiranih u drugoj. Modul je jednostavno .py datoteka, dok paket grupira povezane module unutar direktorija označenog datotekom __init__.py.
U donjim odjeljcima objašnjeni su moduli, paketi, različiti stilovi uvoza i kako funkcioniraju apsolutni i relativni uvozi u Python.
U čemu se nalaze moduli Python?
Modul je datoteka s Python kod. 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 smatra modulom u PythonDa biste koristili modul, morate ga uvesti pomoću uvoz ključna riječ. Funkcije ili varijable prisutne unutar datoteke mogu se koristiti u drugoj datoteci uvozom modula. Ova funkcionalnost dostupna je u drugim jezicima kao što su TypeScript, Javaskripta, Java, Ruby itd.
Kako izraditi i uvesti modul Python?
Sada ćemo kreirati 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 Python.
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 datoteke uvezite datoteku test.py modula, kao što je prikazano dolje:
import test
Prilikom uvoza ne morate spomenuti 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 pokrenete display.py, dobit ćete sljedeće Izlaz:
Welcome to Guru99 Tutorials!
Uvoz razreda Python
Ranije smo vidjeli jednostavan modul s funkcijom. Ovdje ćemo stvoriti klasu i referencirati se na nju unutar druge datoteke.
Struktura mapa 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 nalaze se 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, svim varijablama i funkcijama iz Car.py možemo pristupiti pomoću Car modula.
Korištenje modula from to import
Možete uvesti samo mali dio modula, tj. samo potrebne funkcije i nazive varijabli iz modula umjesto uvoza cijelog koda.
Kada želite uvesti samo određene stvari, možete upotrijebiti 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 datoteci 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 vam je potrebna funkcija 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!
Ako sada koristite funkciju display_message1(), izbacit će greš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
Uvoz vam omogućuje uvoz cijelog modula korištenjem naredbe import nakon čega 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 samo naziv modula za uvoz, za pozivanje na varijable i funkcije unutar modula, morate im dodati prefiks naziva modula.
Primjer
Naziv datoteke: display.py
Import test print(test.display_message()) print(test.display_message1()) print(test.my_name) print(test.my_address)
Naziv modula test koristi se za referenciranje funkcija i varijabli unutar modula test.
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, dat će vam varijable i funkcije koje se nalaze unutar modula.
Evo radnog primjera dir() na modulu. Imamo klasu pod nazivom Car.py, uvezimo Car i dodijelimo ga 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 PythonPokušajmo isto na JSON modul kao što je prikazano u primjeru ispod. 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 ga tretira kao paket, vaš direktorij bi trebao sadržavati datoteku __init__.py. Datoteka __init__.py pretvara direktorij u paket. Evo izgleda paketa na kojem ćemo raditi.
Naziv paketa je mojpaketZa početak rada s paketom, stvorite direktorij pod nazivom mypackage/. Unutar direktorija stvorite praznu datoteku pod nazivom __init__.py. Stvorite još 3 datoteke module1.py, module2.py i module3.py te definirajte funkcije kao što je prikazano na snimci zaslona. Ovdje su detalji za 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 paket je spreman za upotrebu. Sada pozovite paket unutar bilo koje od vaših datoteka kao što je prikazano dolje u test.py:
Ovdje se mypackage.module1 uvozi i dobiva pseudonim kao način1Slično tome, možete koristiti i ostale module module2.py i module3.py iz mypackage-a.
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. Sukladno vašem projektu, možete stvoriti i pakete koji imaju podpakete, tj. podmape s modulima i definiranim klasama.
Python Put traženja modula
Tijekom izvršenja, kada Python nailazi naziv modula uvoza, interpreter pokušava pronaći modul. Pretražuje modul u popisu ugrađenih modula, a zatim u svim direktorijima definiranim 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 o sys.path možete dobiti uvozom sys modula i ispisom sys.path. To će vam dati 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 davanjem mu pseudonima. Pseudonim se može stvoriti pomoću as 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 ćemo 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)
Alias koji se koristi za testni modul je t. Dakle, funkcije i varijable iz test.py mogu se pozivati 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 myproject/. Ima dvije podmape package1 i package2.
Mapa package1 ima dva modula, module1.py i module2.py.
Mapa package2 ima jednu klasu myclass.py, podpaket subpkg s module3.py i posljednji module4.py.
- U module1.py postoji funkcija pod nazivom myfunc1.
- U module2.py postoji funkcija pod nazivom myfunc2.
- U module3.py postoji funkcija pod nazivom myfunc3.
- U module4.py postoji funkcija pod nazivom myfunc4.
Korištenje apsolutnog uvoza
Za apsolutni uvoz, potrebno je dodati cijelu putanju modula izravno iz korijenske mape projekta.
Pogledajmo sada kako koristiti apsolutni uvoz za referenciranje funkcija prisutnih u svakom od modula.
Za rad s funkcijom myfunc1, morat ćete je uvesti na sljedeći način:
from package1.module1 import myfunc1 or from package1 import module1 module1.myfunc1()
Za rad s funkcijom myfunc3, morat ćete je uvesti 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 tracvratite 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:
- Put uvoza može postati vrlo dug ako su moduli ugniježđeni, a imena modula su dugačka.
Korištenje relativnih uvoza
Uzimajući u obzir istu gore spomenutu strukturu mapa, vidjet ćemo kako je uvesti pomoću relativnog uvoza.
Kod relativnog uvoza, modul koji se uvozi relativan je u odnosu na trenutnu lokaciju, odnosno lokaciju na kojoj se nalazi naredba za uvoz.
Sintaksa
U relativnom uvozu morate dodati točku (.) ispred naziva modula kada uvozite pomoću iz.
Dvije točke (..) bit će ispred naziva modula ako je modul jednu razinu više od trenutne lokacije.
Pozivajući se na gore navedenu sliku strukture mapa, imamo sljedeće module s njihovim funkcijama na koje se trebamo pozvati.
- U module1.py postoji funkcija pod nazivom myfunc1.
- U module2.py postoji funkcija pod nazivom myfunc2.
- U module3.py postoji funkcija pod nazivom myfunc3.
- U module4.py postoji funkcija pod nazivom myfunc4.
Za rad s funkcijom myfunc1, morat ćete je uvesti na sljedeći način:
from .module1 import myfunc1
Za rad s funkcijom myfunc3, morat ćete je uvesti na sljedeći način:
from .subpkg.module3 import myfunc3
Prednosti relativnog uvoza
- Lako je raditi s relativnim uvozom.
- S trenutne lokacije, uvozi se mogu skratiti u usporedbi s apsolutnim uvozima.
Nedostaci relativnog uvoza
- Korištenjem relativnog uvoza, teško je tracnatrag gdje se kod nalazi.




