Tuo moduuli sisään Python esimerkkien kanssa
Mitä moduulit sisältävät Python?
Moduuli on tiedosto, jossa on python-koodi. Koodi voi olla muuttujien, funktioiden tai määritellyn luokan muodossa. Tiedostonimestä tulee moduulin nimi.
Jos tiedostonimesi on esimerkiksi guru99.py, moduulin nimi on guru 99. Moduulitoimintojen avulla voit jakaa koodisi eri tiedostoihin sen sijaan, että kirjoittaisit kaiken yhteen tiedostoon.
Mikä on Python tuontimoduuli?
Tiedostoa pidetään moduulina pythonissa. Moduulia varten sinun on tuotava se käyttämällä tuonti avainsana. Tiedoston sisällä olevaa funktiota tai muuttujia voidaan käyttää toisessa tiedostossa tuomalla moduuli. Tämä toiminto on saatavilla muilla kielillä, kuten konekirjoitus, JavaKomentosarja, java, rubiini jne.
Kuinka luoda ja tuoda moduuli sisään Python?
Nyt luomme moduulin ja tuomme sen toiseen tiedostoon.
Tässä on moduulin luomis- ja tuontiprosessi kuvakaappauksen mukaisesti:
Noudata annettuja ohjeita luodaksesi moduulin pythonissa.
Koodin testaamiseen käytetty kansiorakenne on seuraava:
modtest/ test.py display.py
Vaihe 1) Luo tiedosto ja anna sille nimi test.py
Vaihe 2) Luo test.py:ssä funktio nimeltä display_message()
Def display_message(): return "Welcome to Guru99 Tutorials!"
Vaihe 3) Luo nyt toinen tiedosto display.py.
Vaihe 4) Tuo moduletest.py-tiedosto display.py:n sisällä alla olevan kuvan mukaisesti:
import test
Tuonnin aikana sinun ei tarvitse mainita test.py-tiedostoa, vaan vain tiedoston nimi.
Vaihe 5) Sitten voit kutsua funktiota display_message() osoitteesta test.py sisällä display.py, sinun on käytettävä moduulin_nimi.funktion_nimi.
Esimerkiksi test.display_message().
Import test print(test.display_message())
Vaihe 6) Kun suoritat display.py, saat seuraavan lähtö:
Welcome to Guru99 Tutorials!
Luokan tuonti sisään Python
Aiemmin olemme nähneet yksinkertaisen moduulin, jossa on toiminto. Täällä luodaan luokka ja viitataan luokkaan toisessa tiedostossa.
Kansiorakenne koodin testaamiseksi on seuraava:
myproj/ Car.py display.py
Luo tiedosto nimeltä Car.py seuraavalla koodilla:
Tiedostonimi: 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)
Tiedostossa Car.py on määritteet brand_name, model ja manu_year. Luokan sisällä määritellyt funktiot ovat car_details(), get_Car_brand(), get_Car_model().
Käytämme nyt tiedostoa Car.py moduulina toisessa tiedostossa nimeltä display.py.
Tiedostonimi: 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())
lähtö:
BMW Car brand is BMW Car model is Z5 Car manufacture year is 2020 Car brand is BMW Car model is Z5
Voimme siis käyttää kaikkia muuttujia ja toimintoja Car.py:stä Car-moduulin avulla.
Tuontimoduulin käyttäminen kohteesta
Voit tuoda vain pienen osan moduulista eli vain tarvittavat funktiot ja muuttujien nimet moduulista koko koodin tuomisen sijaan.
Kun haluat tuoda vain tiettyjä asioita, voit tuoda haluamasi käyttämällä "from"-avainsanaa.
Syntaksi on siis
from module import your function_name , variables,... etc.
Koodin testaamiseen käytetty kansiorakenne on seuraava:
modtest/ test.py display.py
Test.py:ssä on 2 kuvan mukaista toimintoa:
Tiedostonimi: test.py
defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Nyt haluat display_message()-funktion. Tuotavaan funktioon tai muuttujaan pääsee suoraan alla olevan kuvan mukaisesti:
Tiedoston nimi: display.py
from test import display_message print(display_message())
lähtö:
Welcome to Guru99 Tutorials!
Jos nyt käytät funktiota display_message1() , se antaa virheilmoituksen, että funktiota ei ole määritelty alla esitetyllä tavalla:
from test import display_message print(display_message1())
lähtö:
Traceback (most recent call last): File "display.py", line 3, in <module> print(display_message1()) Name Error: name 'display_message1' is not defined
Kaiken tuominen moduulista
Tuo mahdollistaa koko moduulin tuomisen käyttämällä tuontia ja sen jälkeen moduulin nimeä, eli käytettävää tiedostonimeä tai kirjastoa.
Syntaksi:
Import module
Tai käyttämällä
from module import *
Koodin testaamiseen käytetty kansiorakenne on seuraava:
modtest/ test.py display.py
Seuraavat ovat test.py:n koodin tiedot
my_name = "Guru99" my_address = "Mumbai" defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Käyttämällä tuontimoduulia
Käyttämällä vain tuontimoduulin nimeä viitattaessa moduulin muuttujiin ja funktioihin, sen etuliite on moduulin nimi.
esimerkki
Tiedostonimi: display.py
Import test print(test.display_message()) print(test.display_message1()) print(test.my_name) print(test.my_address)
Moduulin nimitestiä käytetään viittaamaan moduulitestin toimintoon ja muuttujiin.
lähtö:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Tuonnin käyttäminen *
Katsotaanpa esimerkkiä käytöstä tuonti *. käyttämällä tuonti *, funktiot ja muuttujat ovat suoraan käytettävissä alla olevan esimerkin mukaisesti:
from test import * print(display_message()) print(display_message1()) print(my_name) print(my_address)
lähtö:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
dir( ) -funktio
dir() on pythonin sisäänrakennettu funktio. dir() palauttaa kaikki ominaisuudet ja menetelmät, mukaan lukien annetun objektin sisäänrakennetut ominaisuudet.
Joten kun dir():tä käytetään moduulissa, se antaa sinulle muuttujat, funktiot, jotka ovat moduulin sisällä.
Tässä on toimiva esimerkki dir():stä moduulissa. Meillä on luokka nimeltä Car.py, tuodaan Car ja määritetään dir() nähdäksemme tulos.
Kansiorakenne koodin testaamiseksi on seuraava:
test prop/ Car.py test.py
Tiedostonimi: 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)
Tiedostonimi: test.py
import Car class_contents = dir(Car) print(class_contents)
Tulos antaa meille luokan nimen ja kaikki Car.py:ssä määritellyt funktiot.
Voit myös yrittää käyttää dir():tä sisäänrakennetussa moduulissa, joka on saatavilla Python. Kokeillaanpa samaa json moduuli alla olevan esimerkin mukaisesti. Se näyttää kaikki käytettävissä olevat ominaisuudet ja menetelmät json moduuli.
Import json json_details = dir(json) print(json_details)
lähtö:
['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']
Jäsenyydet
Paketti on hakemisto, jonka sisällä on määritetty kaikki moduulit. Jotta a Python tulkki käsittelee sitä pakettina, hakemistossasi pitäisi olla init.pyfile. Init.py tekee hakemistosta paketin. Tässä on paketin asettelu, jota aiomme työstää.
Paketin nimi on minun pakettini. Aloita paketin käsittely luomalla hakemisto paketti/. Luo hakemistoon tyhjä tiedosto nimeltä __init__.py. Luo vielä 3 tiedostoa module1.py, module2.py ja module3.py ja määritä toiminnot kuvakaappauksen mukaisesti. Tässä ovat tiedot module1.py, module2.py ja module3.py
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")
- pakettion valmis käytettäväksi. Kutsu nyt minkä tahansa tiedoston sisällä oleva paketti alla olevan kuvan mukaisesti :test.py:
Täällä mypackage.module1 tuodaan ja sille annetaan aliasnimi mod1. Vastaavasti voit käyttää paketistani muita moduuleja module2.py ja module3.py.
import mypackage.module1 as mod1 print(mod1.mod1_func1()) print(mod1.mod1_func2()) print(mod1.mod1_func2())
lähtö:
Welcome to Module1 function1 None Welcome to Module1 function2 None Welcome to Module1 function2 None
Olemme juuri esitellyt paketin yksinkertaisella moduulilla, jossa on toimintoja. Projektikohtaisesti voit pakata myös alapaketteja. Alikansiot/ joissa on moduulit, joissa luokat on määritelty.
Python Moduulin hakupolku
Suorituksen aikana, kun python törmää tuontimoduulin nimi, tulkki yrittää paikantaa moduulin. Se etsii moduulia sisäänrakennettujen moduulien luettelosta. Later kaiken kaikkiaan sys.path sisällä määritellyt hakemistot.
Yhteenvetona tulkki tekee seuraavan haun löytääkseen moduulin:
- Nykyisessä hakemistossasi.
- Sisäänrakennetun moduulin luettelossa
- Sys.path-hakemistojen sisällä
Saat sys.path tiedot tuomalla sys-moduulin ja tulostamalla sys.path. Se antaa sinulle alla olevan luettelon hakemistoista:
importsys print(sys.path)
lähtö:
['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\ \Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\P ython37\\DLLs']
Voit myös muokata polkua ja säilyttää hakemistot tarpeidesi mukaan.
Moduulin aliaksen käyttö tuonnissa
Voit myös muuntaa moduulin nimen lyhyemmäksi antamalla sille aliaksenimen. Alias voidaan tehdä avainsanalla.
Syntaksi:
import filename as alias name
Kansiorakenne koodin testaamiseksi on seuraava:
Mod test/ test.py display.py
Seuraava on test.py:n sisällä oleva koodi
my_name = "Guru99" my_address = "Mumbai" def display_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Nyt käytetään aliasta test.py:lle hakemistossa display.py
Import test as t print(t.display_message()) print(t.display_message1()) print(t.my_name) print(t.my_address)
Testimoduulin alias on t . Joten test.py:n funktioon ja muuttujiin voidaan viitata käyttämällä aliasta t.
lähtö:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Absoluuttinen ja suhteellinen tuonti Python
Tiedät nyt kuinka tuoda tiedosto moduulina toisen tiedoston sisällä. Katsotaanpa nyt, kuinka hallita kansioissa olevia tiedostoja. Kansioiden tiedostot voidaan tuoda joko absoluuttisella tai suhteellisella tuonnilla.
Harkitse, että sinulla on projektikansiorakenne alla olevan kuvan mukaisesti:
Juurikansio on projektini/. Siinä on kaksi alikansiota paketti1 ja paketti2.
Kansiopaketti1 sisältää kaksi moduulia, module1.py ja module2.py.
Kansion paketissa2 on yksi luokka myclass.py, alipaketti subpkg, jossa on module3.py, ja viimeinen module4.py.
- Moduuli1.py:ssä on toiminto nimeltämyfunc1.
- Moduuli2.py:ssä on toiminto nimeltä myfunc2.
- Moduuli3.py:ssä on toiminto nimeltä myfunc3.
- Moduuli4.py:ssä on toiminto nimeltä myfunc4.
Absoluuttisen tuonnin käyttäminen
Absoluuttista tuontia varten sinun on lisättävä moduulisi koko polku suoraan projektin juurikansiosta.
Katsotaanpa nyt, kuinka käyttää absoluuttista tuontia viittaamaan kunkin moduulin funktioihin.
Toimiaksesi functionmyfunc1:n kanssa sinun on tuotava seuraavasti:
from package1.module1 import myfunc1 or from package1 import module1 module1.myfunc1()
Toimiaksesi myfunc3-funktion kanssa sinun on tuotava seuraavasti:
from package1.subpkg.module3 import myfunc3 or from package1.subpkg import module3 module3.myfunc3()
Absoluuttisen tuonnin käytön edut ja haitat
Tässä ovat absoluuttisen tuonnin edut:
- Moduulit on helppo jäljittää koodintarkistusta varten.
- Helppokäyttöinen ja erittäin suoraviivainen.
- Jos projekti siirretään eri polulle, tuonti pysyy silti ennallaan.
Absoluuttisen tuonnin käytön haitat
Tässä on absoluuttisen tuonnin käytön haittoja:
Haitat:
- Tuontipolku voi olla erittäin pitkä, jos moduulit ovat sisäkkäisiä ja jos moduulien nimi on pitkä.
Suhteellisten tuontien käyttäminen
Kun otetaan huomioon alla mainittu sama kansiorakenne, näemme kuinka tuodaan sama käyttämällä suhteellista tuontia.
Suhteellisessa tuonnissa tuotava moduuli on suhteessa nykyiseen sijaintiin, joka on sijainti, jossa tuontikäsky on.
Syntaksi
Suhteellisessa tuonnissa sinun on lisättävä piste (.) ennen moduulin nimeä, kun tuodat käyttämällä alkaen.
Se on 2 pistettä (..) ennen moduulin nimeä, jos moduuli on yhden tason ylempänä nykyisestä sijainnista.
Viitaten yllä mainittuun kansiorakennekuvaan, meillä on seuraavat moduulit funktioineen, joihin meidän on viitattava.
- Moduuli1.py:ssä on toiminto nimeltämyfunc1.
- Moduuli2.py:ssä on toiminto nimeltä myfunc2.
- Moduuli3.py:ssä on toiminto nimeltä myfunc3.
- Moduuli4.py:ssä on toiminto nimeltä myfunc4.
Toimiaksesi functionmyfunc1:n kanssa sinun on tuotava seuraavasti:
from .module1 import myfunc1
Toimiaksesi myfunc3-funktion kanssa sinun on tuotava seuraavasti:
from .subpkg.module3 import myfunc3
Suhteellisen tuonnin edut
edut:
- Suhteellisen tuonnin kanssa on helppo työskennellä.
- Nykyisestä sijainnista tuontia voidaan lyhentää absoluuttiseen tuontiin verrattuna.
Suhteellisen tuonnin haitat
Haitat:
- Suhteellista tuontia käyttämällä koodin sijaintia on vaikea jäljittää
Yhteenveto
- Tuo sisään Python auttaa viittaamaan koodiin, eli .funktioihin/objekteihin, jotka on kirjoitettu toiseen tiedostoon. Sitä käytetään myös tuomaan python-kirjastoja/-paketteja, jotka asennetaan käyttämällä pip(python-pakettienhallintaa), ja sinun on käytettävä sitä koodissasi.
- Tuontitoiminto on saatavilla muilla kielillä, kuten konekirjoitus, JavaKomentosarja, java, rubiini jne.
- Moduuli on python on tiedoston sisään kirjoitettu koodi, esimerkiksi (test.py). Tiedoston sisällä voit määrittää muuttujat, funktiot tai luokkasi. Koko tiedostosta tulee moduuli ja se voidaan tuoda toiseen tiedostoon viitaten koodiin.
- Moduulitoimintojen avulla voit jakaa koodisi eri tiedostoihin sen sijaan, että kirjoittaisit kaiken yhteen tiedostoon. Later, käyttämällä tuontia, voit viitata tarvitsemasi tiedoston sisällä olevaan koodiin.
- Python on sen sisäänrakennetut moduulit ja myös ulkoiset kirjastot/paketit asennettuna a python-pakettien hallinta (pip), esim. pandat, NumPy jne. kutsutaan moduuleiksi.
- Voit tuoda vain pienen osan moduulista eli vain tarvittavat funktiot ja muuttujien nimet moduulista koko koodin tuomisen sijaan.
- Voit myös muuntaa moduulin nimen lyhyemmäksi antamalla sille aliaksenimen. Alias voidaan tehdä avainsanalla.
- Paketti on hakemisto, jonka sisällä on määritetty kaikki moduulit. Jotta a Python tulkki käsittelee sitä pakettina, hakemistossasi tulee olla __init.pyfile. Init.py tekee hakemistosta paketin. Tässä on paketin asettelu, jota aiomme työstää.
- Suorituksen aikana, kun python törmää tuontimoduulin nimi, tulkki yrittää paikantaa moduulin. Se etsii moduulia sisäänrakennettujen moduulien luettelosta. Later kaiken kaikkiaan sys.path sisällä määritellyt hakemistot.
- Absoluuttista tuontia varten sinun on lisättävä moduulisi koko polku suoraan projektin juurikansiosta.
- Suhteellisessa tuonnissa tuotava moduuli on suhteessa nykyiseen sijaintiin, joka on sijainti, jossa tuontikäsky on.