Tuo moduuli sisään Python esimerkkien kanssa
⚡ Älykäs yhteenveto
Tuo sisään Python antaa yhden tiedoston käyttää uudelleen toisessa tiedostossa määriteltyjä muuttujia, funktioita ja luokkia. Moduuli on yksinkertaisesti .py-tiedosto, kun taas paketti ryhmittelee toisiinsa liittyvät moduulit hakemistoon, joka on merkitty __init__.py-tiedostolla.

Alla olevat osiot selittävät moduulit, paketit, erilaiset tuontityylit ja miten absoluuttinen ja suhteellinen tuonti toimivat Python.
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 Python. Jotta voit käyttää moduulia, sinun on tuotava se käyttämällä tuoda avainsana. Tiedoston sisällä olevia funktioita tai muuttujia voidaan käyttää toisessa tiedostossa tuomalla moduuli. Tämä toiminto on saatavilla muilla kielillä, kuten TypeScript, Javakäsikirjoitus, Java, Ruby 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 moduulin luomiseksi kohdassa Python.
Koodin testaamiseen käytetty kansiorakenne on seuraava:
modtest/ test.py display.py
Vaihe 1) Luo tiedosto ja nimeä se 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 display.py-tiedoston sisään moduulin test.py-tiedosto, kuten alla on esitetty:
import test
Tuonnin aikana sinun ei tarvitse mainita test.py-tiedostoa, vaan riittää tiedoston nimi.
Vaihe 5) Sitten voit kutsua funktiota display_message() funktiota test.py-tiedostosta display.py-tiedoston sisältä. 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-komennon, saat seuraavan tuloksen lähtö:
Welcome to Guru99 Tutorials!
Luokan tuonti sisään Python
Aiemmin näimme yksinkertaisen moduulin, jossa on funktio. Tässä luomme luokan ja viittaamme luokkaan toisen tiedoston sisällä.
Koodin testaamiseen käytettävä kansiorakenne 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 attribuutit brand_name, model ja manu_year. Luokan sisällä määritellyt funktiot ovat car_details(), get_Car_brand() ja 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
Joten voimme käyttää kaikkia Car.py-tiedoston muuttujia ja funktioita Car-moduulin avulla.
Tuontimoduulin käyttäminen kohteesta
Voit tuoda vain pienen osan moduulista, eli vain tarvittavat funktiot ja muuttujien nimet, koko koodin tuomisen sijaan.
Kun haluat tuoda vain tiettyjä asioita, voit käyttää avainsanaa ”from” tuodaksesi haluamasi.
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-tiedostossa on kaksi funktiota, kuten kuvassa näkyy:
Tiedostonimi: test.py
defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Nyt haluat display_message()-funktion. Tuomaasi funktioon tai muuttujaan pääsee suoraan käsiksi alla olevan mukaisesti:
Tiedoston nimi: display.py
from test import display_message print(display_message())
lähtö:
Welcome to Guru99 Tutorials!
Jos nyt satut käyttämään funktiota display_message1(), se heittää virheen, että funktiota ei ole määritelty, kuten alla on esitetty:
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
Tuonti-komennon avulla voit tuoda koko moduulin käyttämällä tuonti-komentoa ja sen perään moduulin nimeä, eli tiedostonimeä tai käytettävää 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
Jos käytät vain tuontimoduulin nimeä ja viittaat moduulin sisällä oleviin muuttujiin ja funktioihin, sinun on lisättävä niiden etuliitteeksi 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 nimeä test käytetään viittaamaan moduulin sisällä oleviin funktioihin 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 sisäänrakennettu funktio, joka on Python. Funktio dir() palauttaa kaikki ominaisuudet ja metodit, mukaan lukien annetun objektin sisäänrakennetut ominaisuudet.
Joten kun dir()-funktiota käytetään moduulissa, se antaa sinulle moduulin sisällä olevat muuttujat ja funktiot.
Tässä on toimiva esimerkki dir()-funktiosta moduulissa. Meillä on luokka nimeltä Car.py. Tuodaan Car ja sijoitetaan se dir()-funktioon nähdäksemme tulosteen.
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 PythonKokeillaanpa samaa json moduuli, kuten alla olevassa esimerkissä on esitetty. Se näyttää kaikki käytettävissä olevat ominaisuudet ja metodit 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 Jos tulkki käsittelee sitä pakettina, hakemistossasi pitäisi olla tiedosto __init__.py. Tiedosto __init__.py tekee hakemistosta paketin. Tässä on paketin asettelu, jonka parissa aiomme työskennellä.
Paketin nimi on pakettiniAloittaaksesi paketin käytön, luo hakemisto nimeltä mypackage/. Luo hakemiston sisään tyhjä tiedosto nimeltä __init__.py. Luo kolme muuta tiedostoa: module1.py, module2.py ja module3.py ja määrittele funktiot kuvakaappauksen mukaisesti. Tässä ovat tiedot tiedostoista 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")
paketti on käyttövalmis. Kutsu nyt pakettia minkä tahansa tiedostosi sisällä, kuten alla olevassa test.py-tiedostossa näytetään:
Täällä mypackage.module1 tuodaan ja sille annetaan aliasnimi tila 1Samoin voit käyttää muita mypackage-paketin 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 esitelleet paketin yksinkertaisella moduulilla, jossa on funktioita. Projektisi mukaisesti voit myös luoda paketteja, joissa on alipaketteja eli alikansioita, joissa on moduuleja ja niiden luokat määriteltyinä.
Python Moduulin hakupolku
Toteutuksen aikana, kun Python tulee vastaan tuontimoduulin nimi, tulkki yrittää paikantaa moduulin. Se etsii moduulia sisäänrakennetusta moduuliluettelosta ja sitten kaikista sys.path-tiedoston sisällä määritellyistä hakemistoista.
Yhteenvetona tulkki tekee seuraavan haun löytääkseen moduulin:
- Nykyisessä hakemistossasi.
- Sisäänrakennettujen moduulien luettelossa.
- sys.path-hakemistojen sisällä.
Voit saada sys.path-tiedoston tiedot tuomalla sys-moduulin ja tulostamalla sys.path-tiedoston. 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 lyhentää moduulin nimeä antamalla sille aliaksen. Alias voidaan luoda käyttämällä as avainsana.
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!"
Käytämme nyt test.py-tiedostolle aliasta display.py-tiedostossa
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-tiedoston funktioihin ja muuttujiin voidaan viitata aliaksen t avulla.
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 myproject/. Siinä on kaksi alikansiota: package1 ja package2.
Kansiossa package1 on kaksi moduulia, moduuli1.py ja moduuli2.py.
Kansion paketissa2 on yksi luokka myclass.py, alipaketti subpkg, jossa on module3.py, ja viimeinen module4.py.
- Moduuli1.py-tiedostossa on funktio nimeltä myfunc1.
- Moduuli2.py-tiedostossa on funktio nimeltä myfunc2.
- Moduuli3.py-tiedostossa on funktio nimeltä myfunc3.
- Moduuli4.py-tiedostossa on funktio nimeltä myfunc4.
Absoluuttisen tuonnin käyttäminen
Absoluuttisia tuonteja varten sinun on lisättävä moduulisi koko polku suoraan projektin juurikansiosta.
Katsotaanpa nyt, miten absoluuttisia tuonteja voidaan hyödyntää viitaten kussakin moduulissa oleviin funktioihin.
Jotta voit työskennellä funktion myfunc1 kanssa, sinun on tuotava se seuraavasti:
from package1.module1 import myfunc1 or from package1 import module1 module1.myfunc1()
Jotta voit työskennellä funktion myfunc3 kanssa, sinun on tuotava se 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:
- Siitä tulee helppoa tracPane moduulit takaisin koodin tarkistusta varten.
- Helppokäyttöinen ja erittäin suoraviivainen.
- Jos projekti siirretään eri polkuun, tuonnit pysyvät silti samoina.
Absoluuttisen tuonnin käytön haitat
Absoluuttisten tuontituotteiden käytön haitat ovat seuraavat:
- Tuontipolusta voi tulla hyvin pitkä, jos moduulit ovat sisäkkäisiä ja moduulien nimet ovat pitkiä.
Suhteellisten tuontien käyttäminen
Ottaen huomioon edellä mainitun kansiorakenteen, näemme, kuinka tuoda se suhteellisten tuontien avulla.
Suhteellisessa tuonnissa tuotava moduuli on suhteessa nykyiseen sijaintiin eli sijaintiin, jossa tuontilauseke sijaitsee.
Syntaksi
Suhteellisessa tuonnissa sinun on lisättävä piste (.) ennen moduulin nimeä, kun tuodat käyttämällä alkaen.
Moduulin nimen edessä on kaksi pistettä (..), jos moduuli on yhden tason ylempänä nykyisestä sijainnista.
Viitaten yllä mainittuun kansiorakennekuvaan, meillä on seuraavat moduulit toimintoineen, joihin meidän on viitattava.
- Moduuli1.py-tiedostossa on funktio nimeltä myfunc1.
- Moduuli2.py-tiedostossa on funktio nimeltä myfunc2.
- Moduuli3.py-tiedostossa on funktio nimeltä myfunc3.
- Moduuli4.py-tiedostossa on funktio nimeltä myfunc4.
Jotta voit työskennellä funktion myfunc1 kanssa, sinun on tuotava se seuraavasti:
from .module1 import myfunc1
Jotta voit työskennellä funktion myfunc3 kanssa, sinun on tuotava se seuraavasti:
from .subpkg.module3 import myfunc3
Suhteellisen tuonnin edut
- Suhteellisen tuonnin kanssa on helppo työskennellä.
- Nykyisestä sijainnista tuontia voidaan lyhentää absoluuttiseen tuontiin verrattuna.
Suhteellisen tuonnin haitat
- Suhteellisten tuontimäärien käyttäminen on vaikeaa tractakaisin sinne, missä koodi sijaitsee.



