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.



