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:

Luo ja tuo moduuli sisään Python

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ää.

Paketit sisään Python

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:

  1. Nykyisessä hakemistossasi.
  2. Sisäänrakennetun moduulin luettelossa
  3. 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:

Absoluuttinen ja suhteellinen tuonti Python

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.

Päivittäinen Guru99-uutiskirje

Aloita päiväsi uusimmilla ja tärkeimmillä tekoälyuutisilla, jotka toimitetaan juuri nyt.