Impordi moodul sisse Python koos näidetega
Mis moodulid sisaldavad Python?
Moodul on pythoni koodiga fail. Kood võib olla muutujate, funktsioonide või määratletud klassi kujul. Failinimest saab mooduli nimi.
Näiteks kui teie failinimi on guru99.py, on mooduli nimi guru99. Mooduli funktsioonide abil saate oma koodi jagada erinevateks failideks, selle asemel, et kirjutada kõike ühte faili.
Mis on Python impordi moodul?
Faili peetakse Pythonis mooduliks. Mooduli kasutamiseks peate selle importima import märksõna. Faili sees olevat funktsiooni või muutujaid saab mooduli importimisel kasutada mõnes teises failis. See funktsioon on saadaval teistes keeltes, näiteks masinakirjas, JavaSkript, java, rubiin jne.
Kuidas moodulit luua ja importida Python?
Nüüd loome mooduli ja impordime selle teise faili.
Siin on mooduli loomise ja importimise voog, nagu on näidatud ekraanipildil:
Pythonis mooduli loomiseks järgige antud juhiseid.
Koodi testimiseks kasutatav kaustastruktuur on järgmine:
modtest/ test.py display.py
Step 1) Looge fail ja nimetage see test.py
Step 2) Looge failis test.py funktsioon nimega display_message()
Def display_message(): return "Welcome to Guru99 Tutorials!"
Step 3) Nüüd looge uus fail display.py.
Step 4) Importige failist display.py fail moduletest.py, nagu allpool näidatud:
import test
Importimise ajal ei pea te mainima faili test.py, vaid lihtsalt faili nime.
Step 5) Seejärel saate välja kutsuda funktsiooni display_message() failist test.py failis display.py, peate kasutama funktsiooni mooduli_nimi.funktsiooni_nimi.
Näiteks test.display_message().
Import test print(test.display_message())
Step 6) Kui käivitate faili display.py, saate järgmise Väljund:
Welcome to Guru99 Tutorials!
Klassi importimine Python
Varem oleme näinud lihtsat funktsiooniga moodulit. Siin luuakse klass ja suunatakse klassi teises failis.
Koodi testimise kaustastruktuur on järgmine:
myproj/ Car.py display.py
Looge fail nimega Car.py järgmise koodiga:
Faili nimi: 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)
Failis Car.py on atribuudid brand_name, model ja manu_year. Klassi sees defineeritud funktsioonid on car_details(), get_Car_brand(), get_Car_model().
Kasutagem nüüd faili Car.py moodulina teises failis nimega display.py.
Failinimi: 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())
Väljund:
BMW Car brand is BMW Car model is Z5 Car manufacture year is 2020 Car brand is BMW Car model is Z5
Seega pääseme Car.py kaudu kõikidele muutujatele ja funktsioonidele juurde, kasutades automoodulit.
Impordimooduli kasutamine alates
Täiskoodi importimise asemel saab moodulist importida vaid väikese osa moodulist, st ainult vajalikke funktsioone ja muutujate nimesid.
Kui soovite importida ainult teatud asju, saate soovitud importimiseks kasutada märksõna „from”.
Nii et süntaks on
from module import your function_name , variables,... etc.
Koodi testimiseks kasutatav kaustastruktuur on järgmine:
modtest/ test.py display.py
Test.py-s on kaks funktsiooni, nagu näidatud:
Failinimi: test.py
defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Nüüd soovite funktsiooni display_message(). Imporditavale funktsioonile või muutujale pääseb otse juurde järgmiselt:
Faili nimi: display.py
from test import display_message print(display_message())
Väljund:
Welcome to Guru99 Tutorials!
Nüüd, kui juhtute kasutama funktsiooni display_message1() , annab see veateate, et funktsioon pole määratletud, nagu allpool näidatud:
from test import display_message print(display_message1())
Väljund:
Traceback (most recent call last): File "display.py", line 3, in <module> print(display_message1()) Name Error: name 'display_message1' is not defined
Kõik importimine moodulist
Import võimaldab teil importida kogu mooduli, kasutades importi, millele järgneb mooduli nimi, st failinimi või kasutatav teegi.
süntaksit:
Import module
Või kasutades
from module import *
Koodi testimiseks kasutatav kaustastruktuur on järgmine:
modtest/ test.py display.py
Järgnevalt on toodud test.py koodi üksikasjad
my_name = "Guru99" my_address = "Mumbai" defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Impordimooduli kasutamine
Kui kasutate mooduli sees olevatele muutujatele ja funktsioonidele viitamiseks lihtsalt mooduli nime, peab selle eesliide olema mooduli nimi.
Näide
Failinimi: display.py
Import test print(test.display_message()) print(test.display_message1()) print(test.my_name) print(test.my_address)
Mooduli nime testi kasutatakse funktsiooni ja muutujate viitamiseks moodulite testis.
Väljund:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Impordi kasutamine *
Vaatame näidet kasutamise kohta import *. Kasutades import *, on funktsioonidele ja muutujatele otse juurdepääs, nagu on näidatud allolevas näites:
from test import * print(display_message()) print(display_message1()) print(my_name) print(my_address)
Väljund:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Funktsioon dir( ).
Dir() on pythoni sisseehitatud funktsioon. Dir() tagastab kõik omadused ja meetodid, sealhulgas antud objekti sisseehitatud omadused.
Nii et kui moodulis kasutatakse dir(), annab see teile moodulis olevad muutujad, funktsioonid.
Siin on näide dir()-st moodulil. Meil on klass nimega Car.py, impordime auto ja määrame väljundi nägemiseks dir().
Koodi testimise kaustastruktuur on järgmine:
test prop/ Car.py test.py
Faili nimi: 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)
Faili nimi: test.py
import Car class_contents = dir(Car) print(class_contents)
Väljund annab meile klassi nime ja kõik Car.py-s määratletud funktsioonid.
Samuti võite proovida kasutada dir() sisseehitatud moodulis, mis on saadaval Python. Proovime sama Json moodul, nagu on näidatud allolevas näites. See kuvab kõik saadaolevad omadused ja meetodid Json moodul.
Import json json_details = dir(json) print(json_details)
Väljund:
['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']
Paketid
Pakett on kataloog, mille sees on määratletud kõik moodulid. Et teha a Python interpreter käsitleb seda paketina, peaks teie kataloogis olema fail init.py. Init.py teeb kataloogi paketina. Siin on paketi paigutus, mille kallal töötame.
Pakendi nimi on minu pakett. Paketiga töö alustamiseks looge kataloog nimega package/. Looge kataloogis tühi fail nimega __init__.py. Looge veel 3 faili module1.py, module2.py ja module3.py ning määrake funktsioonid, nagu on näidatud ekraanipildil. Siin on module1.py, module2.py ja module3.py üksikasjad
moodul1.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")
moodul2.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")
moodul3.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")
. pakendon kasutusvalmis. Nüüd kutsuge mis tahes faili sees olev pakett, nagu allpool näidatud: test.py:
Siin imporditakse mypackage.module1 ja sellele antakse varjunimi kui mod1. Samamoodi saate kasutada minu paketi teisi mooduleid module2.py ja module3.py.
import mypackage.module1 as mod1 print(mod1.mod1_func1()) print(mod1.mod1_func2()) print(mod1.mod1_func2())
Väljund:
Welcome to Module1 function1 None Welcome to Module1 function2 None Welcome to Module1 function2 None
Näitasime just paketti lihtsa mooduliga, mille sees on funktsioonid. Vastavalt oma projektile saate pakendada ka alampakette. Alamkaustad/ milles on määratletud klassidega moodulid.
Python Mooduli otsingutee
Täitmise ajal, kui python vastu tuleb impordi mooduli nimi, proovib tõlk mooduli asukohta leida. See otsib moodulit sisseehitatud moodulite loendist. Later üldiselt sys.path määratletud kataloogid.
Kokkuvõtteks teeb tõlk mooduli leidmiseks järgmise otsingu:
- Teie praeguses kataloogis.
- Sisseehitatud moodulite loendis
- Kataloogide sys.path sees
Faili sys.path üksikasjad leiate, importides sys mooduli ja printides faili sys.path. See annab teile kataloogide loendi, nagu allpool näidatud:
importsys print(sys.path)
Väljund:
['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\ \Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\P ython37\\DLLs']
Samuti saate muuta teed ja hoida katalooge vastavalt oma vajadustele.
Mooduli aliase kasutamine importimisel
Samuti saate teisendada mooduli nime lühemaks vormiks, andes sellele varjunime. Pseudonüümi saab teha märksõna abil.
süntaksit:
import filename as alias name
Koodi testimise kaustastruktuur on järgmine:
Mod test/ test.py display.py
Järgmine on test.py kood
my_name = "Guru99" my_address = "Mumbai" def display_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Nüüd kasutab test.py pseudonüümi failis display.py
Import test as t print(t.display_message()) print(t.display_message1()) print(t.my_name) print(t.my_address)
Testmooduli jaoks kasutatav pseudonüüm on t. Seega saab faili test.py funktsioonile ja muutujatele viidata varjunime t abil.
Väljund:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Absoluutne ja suhteline import Python
Nüüd teate, kuidas importida faili teise faili moodulina. Vaatame nüüd, kuidas hallata kaustades saadaolevaid faile. Kaustades olevaid faile saab importida kas absoluutse või suhtelise impordi abil.
Arvestage, et teil on projekti kausta struktuur, nagu allpool näidatud:
Juurkaust on minu projekt/. Sellel on kaks alamkausta pakett1 ja pakett2.
Kaustapaketil1 on kaks moodulit module1.py ja module2.py.
Kaustapaketil2 on üks klass myclass.py, alampaketi alampakett koos module3.py ja viimane module4.py.
- Failis module1.py on funktsioon nimega myfunc1.
- Failis module2.py on funktsioon nimega myfunc2.
- Failis module3.py on funktsioon nimega myfunc3.
- Failis module4.py on funktsioon nimega myfunc4.
Absoluutse impordi kasutamine
Absoluutse impordi jaoks peate lisama kogu oma mooduli tee otse projekti juurkaustast.
Vaatame nüüd, kuidas kasutada absoluutset importi, et viidata igas moodulis olevatele funktsioonidele.
Funktsiooniga functionmyfunc1 töötamiseks peate importima järgmiselt:
from package1.module1 import myfunc1 or from package1 import module1 module1.myfunc1()
Funktsiooniga myfunc3 töötamiseks peate importima järgmiselt:
from package1.subpkg.module3 import myfunc3 or from package1.subpkg import module3 module3.myfunc3()
Absoluutse impordi kasutamise eelised ja puudused
Siin on absoluutse impordi kasutamise eelised:
- Koodikontrolliks on mooduleid lihtne jälgida.
- Lihtne kasutada ja väga otsekohene.
- Kui projekt viiakse teisele teele, jääb import siiski samaks.
Absoluutse impordi kasutamise puudused
Siin on absoluutse impordi kasutamise puudused:
Puudused:
- Imporditee võib muutuda väga pikaks, kui moodulid on pesastatud ja kui moodulite nimi on pikk.
Suhtelise impordi kasutamine
Võttes arvesse allpool mainitud sama kaustastruktuuri, näeme, kuidas importida sama suhtelise impordi abil.
Suhtelise impordi puhul on imporditav moodul suhteline praeguse asukohaga, mis on asukoht, kus impordiavaldus asub.
Süntaks
Suhtelises impordis tuleb kasutades importimisel lisada mooduli nime ette punkt (.). Alates.
See on 2 punkti (..) enne mooduli nime, kui moodul asub praegusest asukohast ühe taseme võrra kõrgemal.
Viidates ülalmainitud kaustastruktuuri joonisele, on meil järgmised moodulid oma funktsiooniga, millele peame viidata.
- Failis module1.py on funktsioon nimega myfunc1.
- Failis module2.py on funktsioon nimega myfunc2.
- Failis module3.py on funktsioon nimega myfunc3.
- Failis module4.py on funktsioon nimega myfunc4.
Funktsiooniga functionmyfunc1 töötamiseks peate importima järgmiselt:
from .module1 import myfunc1
Funktsiooniga myfunc3 töötamiseks peate importima järgmiselt:
from .subpkg.module3 import myfunc3
Suhtelise impordi eelised
Plussid:
- Suhtelise impordiga on lihtne töötada.
- Praegusest asukohast saab importi lühendada absoluutimpordiga võrreldes.
Suhtelise impordi puudused
Puudused:
- Suhtelist importi kasutades on koodi asukoha määramine keeruline
kokkuvõte
- Import sisse Python aitab viidata koodile, st funktsioonidele/objektidele, mis on kirjutatud teise faili. Seda kasutatakse ka pythoni teekide/pakettide importimiseks, mis installitakse pip (pythoni paketihalduri) abil ja mida peate seejärel oma koodis kasutama.
- Impordifunktsioonid on saadaval teistes keeltes, näiteks masinakirjas, JavaSkript, java, rubiin jne.
- Moodul on python on näiteks faili sisse kirjutatud kood (test.py). Faili sees saate määrata muutujad, funktsioonid või klassi. Kogu fail muutub mooduliks ja selle saab koodile viitamiseks importida teise faili.
- Mooduli funktsioonide abil saate oma koodi jagada erinevateks failideks, selle asemel, et kirjutada kõike ühte faili. Later, kasutades importi, saate viidata vajaliku faili sees olevale koodile.
- Python on oma sisseehitatud moodulid ja ka välised teegid/paketid, mis on installitud kasutades a pythoni paketihaldur (pip), nt pandasid, NumPy jne nimetatakse mooduliteks.
- Täieliku koodi importimise asemel saab moodulist importida vaid väikese osa moodulist, st moodulist ainult vajalikke funktsioone ja muutujate nimesid.
- Samuti saate teisendada mooduli nime lühemaks vormiks, andes sellele varjunime. Pseudonüümi saab teha märksõna abil.
- Pakett on kataloog, mille sees on määratletud kõik moodulid. Et teha a Python interpreter käsitleb seda paketina, peaks teie kataloogis olema fail __init.py. Init.py teeb kataloogi paketina. Siin on paketi paigutus, mille kallal töötame.
- Täitmise ajal, kui python vastu tuleb impordi mooduli nimi, proovib tõlk mooduli asukohta leida. See otsib moodulit sisseehitatud moodulite loendist. Later üldiselt sys.path määratletud kataloogid.
- Absoluutse impordi jaoks peate lisama kogu oma mooduli tee otse projekti juurkaustast.
- Suhtelise impordi puhul on imporditav moodul suhteline praeguse asukohaga, mis on asukoht, kus impordiavaldus asub.