Tuo moduuli Pythoniin esimerkkien avulla

Sisällysluettelo:

Anonim

Mitkä ovat Pythonin moduulit?

Moduuli on tiedosto, jossa on python-koodi. Koodi voi olla määriteltyjen muuttujien, funktioiden tai luokan muodossa. Tiedostonimestä tulee moduulin nimi.

Esimerkiksi, jos tiedostonimi on guru99.py, moduulin nimi on guru99 . Moduulitoiminnoilla voit jakaa koodisi eri tiedostoihin sen sijaan, että kirjoitat kaiken yhden tiedoston sisällä.

Tässä opetusohjelmassa opit:

  • Mitkä ovat Pythonin moduulit?
  • Python-tuontimoduuli
  • Kuinka luoda ja tuoda moduuli Pythonissa?
  • Luokan tuonti Pythonissa
  • Käyttämällä moduulin tuontia varten
  • Tuo kaikki moduulista
  • Tuontimoduulin käyttäminen
  • Tuonnin käyttäminen *
  • Dir () -toiminto
  • Paketit
  • PythonModuleSearchPath
  • Moduulin aliaksen käyttäminen tuonnissa
  • Absoluuttinen ja suhteellinen tuonti Pythonissa
  • AbsoluteImportsin käyttäminen
  • UsingRelativeImports

Mikä on Python-tuontimoduuli?

Tiedostoa pidetään moduulina pythonissa. Jos haluat käyttää moduulia, sinun on tuotava se tuonnin avainsanalla. Tiedoston sisällä olevaa toimintoa tai muuttujia voidaan käyttää toisessa tiedostossa tuomalla moduuli. Tämä toiminto on saatavana muilla kielillä, kuten konekirjoitus, JavaScripti, Java, rubiini jne.

Kuinka luoda ja tuoda moduuli Pythonissa?

Nyt luomme moduulin ja tuomme sen toiseen tiedostoon.

Tässä on kulku moduulin luomiseen ja tuomiseen kuvakaappauksen mukaisesti:

Luo moduuli pythoniin noudattamalla annettuja ohjeita.

Koodin testaamiseen käytetty kansiorakenne on seuraava:

modtest/test.pydisplay.py

Vaihe 1) Luo tiedosto ja nimeä se test.py

Vaihe 2) Luo test.py: n sisällä toiminto 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-tiedoston alla olevan kuvan mukaisesti:

import test

Tuonnin aikana sinun ei tarvitse mainita test.py, vaan vain tiedoston nimen.

Vaihe 5)

Sitten voit soittaa funktiolle display_message () osoitteesta test.py sisältä display.py, sinun on käytettävä moduulin_nimi.funktion_nimi.

Esimerkiksi test.display_message ().

Import testprint(test.display_message())

Vaihe 6)

Kun suoritat display.py, saat seuraavan tuloksen:

Welcome to Guru99 Tutorials!

Luokan tuonti Pythonissa

Aiemmin olemme nähneet yksinkertaisen moduulin, jolla on toiminto. Tässä luodaan luokka ja viitataan luokkaan toiseen tiedostoon.

Koodin testaamiseen tarkoitettu kansiorakenne on seuraava:

myproj/Car.pydisplay.py

Luo tiedosto 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_nameself.model = modelself.manu_year = manu_yeardef 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)

Car.py-tiedostossa on määritteet tuotenimi, malli ja valmistajan vuosi. Luokan sisällä määritetyt toiminnot ovat car_details (), get_Car_brand (), get_Car_model ().

Käytä nyt tiedostoa Car.py moduulina toisessa tiedostossa nimeltä display.py.

Tiedostonimi: display.py

import Carcar_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())

Tuotos:

BMWCar brand is BMWCar model is Z5Car manufacture year is 2020Car brand is BMWCar model is Z5

Joten voimme käyttää kaikkia muuttujia ja toimintoja Car.py: ltä käyttämällä Car-moduulia.

Käyttämällä moduulin tuontia varten

Voit tuoda moduulista vain pienen osan eli vain vaaditut toiminnot ja muuttujien nimet koko koodin tuomisen sijaan.

Kun haluat tuoda vain tiettyjä asioita, voit tuoda haluamasi "from" -hakusanalla.

Joten syntaksia on

from module import your function_name , variables,… etc.

Koodin testaamiseen käytetty kansiorakenne on seuraava:

modtest/test.pydisplay.py

Test.py-ohjelmassa on 2 esitettyä toimintoa:

Tiedostonimi: test.py

defdisplay_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"

Nyt haluat display_message () -toiminnon. Tuotavaa toimintoa tai muuttujaa voi käyttää suoraan alla olevan kuvan mukaisesti:

Tiedostonimi: display.py

from test import display_messageprint(display_message())

Tuotos:

Welcome to Guru99 Tutorials!

Nyt jos satut käyttämään toimintoa display_message1 (), se heittää virheen, että toimintoa ei ole määritelty kuten alla on esitetty:

from test import display_messageprint(display_message1())

Tuotos:

Traceback (most recent call last):File "display.py", line 3, in print(display_message1())Name Error: name 'display_message1' is not defined

Tuo kaikki moduulista

Tuonnin avulla voit tuoda koko moduulin käyttämällä tuontia, jota seuraa moduulin nimi, eli käytettävä tiedostonimi tai kirjasto.

Syntaksi:

Import module

Tai käyttämällä

from module import *

Koodin testaamiseen käytetty kansiorakenne on seuraava:

modtest/test.pydisplay.py

Seuraavassa on kooditiedot test.py: n sisällä

my_name = "Guru99"my_address = "Mumbai"defdisplay_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"

Tuontimoduulin käyttäminen

Käyttämällä vain tuoda moduulin nimeä, moduulin sisällä on oltava etuliite, jotta viitataan moduulin sisällä oleviin muuttujiin ja toimintoihin.

Esimerkki

Tiedostonimi: display.py

Import testprint(test.display_message())print(test.display_message1())print(test.my_name)print(test.my_address)

Moduulin nimitestiä käytetään viittaamaan moduulitestin sisällä olevaan toimintoon ja muuttujiin.

Tuotos:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Tuonnin käyttäminen *

Katsotaanpa esimerkki käyttämällä tuontia * . Käyttäen tuonti * , toiminnot ja muuttujat ovat suoraan saatavilla, kuten on esitetty alla olevassa esimerkissä:

from test import *print(display_message())print(display_message1())print(my_name)print(my_address)

Tuotos:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Dir () -toiminto

Dir () on sisäänrakennettu toiminto pythonissa. Dir () palauttaa kaikki ominaisuudet ja menetelmät, mukaan lukien annetun objektin sisäänrakennetut ominaisuudet.

Joten kun moduulissa käytetään dir (), se antaa sinulle muuttujat, toiminnot, jotka ovat moduulin sisällä.

Tässä on toimiva esimerkki moduulin dir (): stä. Meillä on luokka nimeltä Car.py, tuokaamme Car ja määritetään dir () nähdäksesi tulos.

Koodin testaamiseen käytettävä kansiorakenne on seuraava:

test prop/Car.pytest.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_nameself.model = modelself.manu_year = manu_yeardef 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 Carclass_contents = dir(Car)print(class_contents)

Tulos antaa meille luokan nimen ja kaikki Car.py: ssä määritellyt toiminnot.

Voit myös yrittää käyttää dir (): ää sisäänrakennetussa moduulissa, joka on saatavana Pythonissa. Yritetään samaa json- moduulissa kuin alla olevassa esimerkissä on esitetty. Se näyttää kaikki Json- moduulissa käytettävissä olevat ominaisuudet ja menetelmät .

Import jsonjson_details = dir(json)print(json_details)

Tuotos:

['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_encoder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']

Paketit

Paketti on hakemisto, jossa kaikki moduulit on määritelty sen sisällä. Jos haluat, että Python-tulkki käsittelee sitä pakettina, hakemistossasi tulisi olla init.pyfile. Init.py tekee hakemistosta paketin. Tässä on paketin asettelu, jota aiomme työskennellä.

Paketin nimi on pakettini . Aloita paketin käyttö luomalla hakemisto nimeltä package /. Luo hakemiston sisälle 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 moduulien1.py, module2.py ja module3.py yksityiskohdat

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")

Paketti s käyttövalmis. Kutsu nyt minkä tahansa tiedostosi paketti alla esitetyllä tavalla: test.py:

Täällä tuodaan mypackage.module1 ja annetaan aliaksen nimi mod1: ksi. Vastaavasti voit käyttää paketistani muita moduuleja module2.py ja module3.py.

import mypackage.module1 as mod1print(mod1.mod1_func1())print(mod1.mod1_func2())print(mod1.mod1_func2())

Tuotos:

Welcome to Module1 function1NoneWelcome to Module1 function2NoneWelcome to Module1 function2None

Olemme juuri osoittaneet paketin yksinkertaisella moduulilla, jonka toiminnot ovat sen sisällä. Projektisi mukaan voit myös pakata alipaketteja. Alikansiot / moduulit, joiden luokat on määritelty.

Python-moduulin hakupolku

Suorituksen aikana, kun python löytää tuontimoduulin nimen , tulkki yrittää paikantaa moduulin. Se etsii moduulia sisäänrakennetusta moduuliluettelosta. Myöhemmin sys.path-ohjelmassa määritetyt hakemistot.

Yhteenvetona, tulkki tekee seuraavan haun moduulin löytämiseksi:

  1. Nykyisessä hakemistossa.
  2. Sisäänrakennettu moduuliluettelossa
  3. Sisällä sys.path-hakemistot

Saat sys.path-tiedot tuomalla sys-moduulin ja tulostamalla sys.path. Se antaa sinulle luettelon hakemistoista alla olevan kuvan mukaisesti:

importsysprint(sys.path)

Tuotos:

['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\DLLs']

Voit myös muokata polkua ja pitää hakemistot tarpeidesi mukaan.

Moduulin aliaksen käyttäminen tuonnissa

Voit myös muuntaa moduulin nimen lyhyemmäksi antamalla sille aliaksen nimen. Alias ​​voidaan tehdä avainsanalla.

Syntaksi:

import filename as alias name

Koodin testaamiseen käytettävä kansiorakenne on seuraava:

Mod test/test.pydisplay.py

Seuraava on koodi test.py: n sisällä

my_name = "Guru99"my_address = "Mumbai"def display_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"

Nyt käyttää aliasta test.py-tiedostoon display.py-ohjelmassa

Import test as tprint(t.display_message())print(t.display_message1())print(t.my_name)print(t.my_address)

Testimoduulille käytetty alias on t. Joten test.py: n funktioon ja muuttujiin voidaan viitata aliaksella t.

Tuotos:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Absoluuttinen ja suhteellinen tuonti Pythonissa

Tiedät nyt, kuinka tiedosto tuodaan moduulina toisen tiedoston sisällä. Katsotaan nyt, miten kansioissa olevia tiedostoja hallitaan. Kansioissa olevat tiedostot voidaan tuoda joko absoluuttisella tai suhteellisella tuonnilla.

Harkitse, että sinulla on projektikansiorakenne alla olevan kuvan mukaisesti:

Juurikansio on projekti /. Siinä on kaksi alikansiota package1 ja package2.

Kansiopaketissa1 on kaksi moduulia, module1.py ja module2.py.

Kansiossa package2 on yksi luokka myclass.py, alipaketin alipaketti, jossa on module3.py, ja viimeinen module4.py.

  • Moduulissa1.py on functioncalledmyfunc1.
  • Moduulissa2.py on functioncalledmyfunc2.
  • Kohdassa module3.py on functioncalledmyfunc3.
  • Vuonna module4.py on functioncalledmyfunc4.

Absoluuttisen tuonnin käyttö

Absolute-tuontia varten sinun on lisättävä moduulin koko polku suoraan projektin juurikansiosta.

Katsotaanpa nyt, kuinka absoluuttisen tuonnin avulla voidaan viitata kussakin moduulissa oleviin toimintoihin.

Toimiakseen functionmyfunc1: n kanssa, sinun on tuotava seuraavasti:

from package1.module1 import myfunc1orfrom package1 import module1module1.myfunc1()

Toimiakseen myfunc3-toimintoa, sinun on tuotava se seuraavasti:

from package1.subpkg.module3 import myfunc3orfrom package1.subpkg import module3module3.myfunc3()

Absoluuttisen tuonnin edut ja haitat

Tässä ovat absoluuttisen tuonnin käytön edut:

  • Moduulien jäljittäminen koodin tarkistamiseksi on helppoa.
  • Helppo käyttää ja erittäin suoraviivainen.
  • Jos projekti siirretään eri polulle, tuonti pysyy silti samana.

Absoluuttisen tuonnin käytön haitat

Tässä on absoluuttisen tuonnin käytön haittoja:

Haitat:

  • Tuontipolku voi pidentyä siinä tapauksessa, että moduulit ovat sisäkkäisiä ja jos moduulien nimi on pitkä.

Suhteellisen tuonnin käyttö

Kun otetaan huomioon sama alla mainittu kansiorakenne, näemme, kuinka tuoda sama suhteellisen tuonnin avulla.

Suhteellisessa tuonnissa tuotava moduuli on suhteessa nykyiseen sijaintiin, joka on tuontilausekkeen sijainti.

Syntaksi:

Suhteellisessa tuonnissa sinun on lisättävä piste (.) Ennen moduulin nimeä tuotaessasi kohteesta .

Moduulin nimen edessä on kaksi jaksoa (…), jos moduuli on yhden tason ylöspäin nykyisestä sijainnista.

Edellä mainittuun kansiorakenteen kuvaan viitaten meillä on seuraavat moduulit niiden toiminnalla, joihin meidän on viitattava.

  • Moduulissa1.py on functioncalledmyfunc1.
  • Moduulissa2.py on functioncalledmyfunc2.
  • Kohdassa module3.py on functioncalledmyfunc3.
  • Vuonna module4.py on functioncalledmyfunc4.

Toimiakseen functionmyfunc1: n kanssa sinun on tuotava seuraavasti:

from .module1 import myfunc1

Toimiakseen myfunc3-toiminnon kanssa sinun on tuotava seuraava:

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:

  • Suhteellisen tuonnin avulla on vaikea jäljittää koodin sijainti

Yhteenveto:

  • Tuonti Pythonissa auttaa sinua viittaamaan koodiin, toisin sanoen .functions / objectiin, jotka on kirjoitettu toiseen tiedostoon. Sitä käytetään myös python-kirjastojen / pakettien tuontiin, jotka on asennettu pipillä (python-paketinhallinta), ja sinun on sitten käytettävä koodissasi.
  • Tuontitoiminnot ovat käytettävissä muilla kielillä, kuten konekirjoitus, JavaScript, Java, rubiini jne.
  • Moduuli on python on tiedoston sisällä kirjoitettu koodi, esimerkiksi (test.py). Tiedostosi sisällä voit määrittää muuttujat, toiminnot tai luokan. Koko tiedostosta tulee moduuli, ja se voidaan tuoda toiseen tiedostoon viittaamaan koodiin.
  • Moduulitoiminnoilla voit jakaa koodisi eri tiedostoihin sen sijaan, että kirjoitat kaiken yhden tiedoston sisällä. Myöhemmin voit tuonnin avulla viitata tarvittavan tiedoston sisällä olevaan koodiin.
  • Pythonissa on sisäänrakennetut moduulit, ja myös python-paketinhallintaohjelmalla (pip) asennettuihin ulkoisiin kirjastoihin / paketteihin, esim. Pandoihin, NumPyyn jne. Viitataan moduuleina.
  • Voit tuoda moduulista vain pienen osan moduulista, ts. Vain vaaditut toiminnot ja muuttujien nimet moduulista koko koodin tuomisen sijaan.
  • Voit myös muuntaa moduulin nimen lyhyemmäksi antamalla sille aliaksen nimen. Alias ​​voidaan tehdä avainsanalla.
  • Paketti on hakemisto, jossa kaikki moduulit on määritelty sen sisällä. Jos haluat, että Python-tulkki käsittelee sitä pakettina, hakemistossa tulisi olla __init.pyfile. Init.py tekee hakemistosta paketin. Tässä on paketin asettelu, jota aiomme työskennellä.
  • Suorituksen aikana, kun python löytää tuontimoduulin nimen , tulkki yrittää paikantaa moduulin. Se etsii moduulia sisäänrakennetusta moduuliluettelosta. Myöhemmin sys.path-ohjelmassa määritetyt hakemistot.
  • Absolute-tuontia varten sinun on lisättävä moduulin koko polku suoraan projektin juurikansiosta.
  • Suhteellisessa tuonnissa tuotava moduuli on suhteessa nykyiseen sijaintiin, joka on tuontilausekkeen sijainti.