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.

  • 🔘 Mikä on moduuli: Moduuli on yksi .py-tiedosto, joka sisältää muuttujia, funktioita tai luokkia.
  • ☑️ tuo avainsana: import lataa kokonaisen moduulin; moduulin_nimi.funktion_nimi kutsuu sen jäseniä.
  • Valikoiva tuonti: moduulin import-funktiolta nimi hakee vain tarvitsemasi funktiot tai muuttujat.
  • 🧪 nimiä: import module alias lyhentää pitkiä nimiä; from module import * paljastaa kaiken.
  • 🛠️ Paketit ja polut: __init__.py muuttaa kansion paketiksi; sys.path listaa hakusijainnit.
  • 🤖 Tekoälyn työnkulut: Koneoppimisprojektit tuovat NumPy:n, pandat ja Py:nTorch moduuleina.

Tuo moduuli sisään Python

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:

Luo ja tuo moduuli sisään Python

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

Paketit sisään Python

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:

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

Absoluuttinen ja suhteellinen tuonti Python

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.

UKK

Python Moduulia ei löydy. Varmista, että tiedosto on kirjoitettu oikein, sijaitsee sys.path-hakemistossa tai nykyisessä kansiossa ja että paketti on asennettu aktiiviseen virtuaaliympäristöösi. Suorita pip install ja sen jälkeen kolmannen osapuolen moduulien paketin nimi.

Asenna se ensin pIP, The Python paketinhallintaohjelma, esimerkiksi pip install pandas. Kun se on asennettu ympäristöösi, tuo se normaalisti import pandas -komennolla. Sisäänrakennettuja moduuleja, kuten json, ei tarvitse asentaa.

Ympyrätuonti tapahtuu, kun kaksi moduulia tuo toisensa ja toinen ladataan vain osittain. Korjaa tämä yhdistämällä jaettu koodi, tuomalla sitä tarvitsevan funktion sisällä tai tuomalla koko moduuli tiettyjen nimien sijaan.

Tuo suoja suorittaa koodia vain, kun tiedosto suoritetaan suoraan, ei tuotaessa sitä. Ilman sitä jokainen tuonti suorittaisi moduulin päätason lauseet uudelleen. Se pitää uudelleenkäytettävät funktiot erillään skriptityyppisestä testikoodista.

Ei. Python suorittaa moduulin kerran, tallentaa sen sitten välimuistiin sys.modules-tiedostoon ja käyttää kyseistä objektia uudelleen myöhempää tuontia varten. Voit pakottaa uudelleenlatauksen kehityksen aikana kutsumalla importlib.reload(module).

Käytä importlib.import_module(“name”) -funktiota, kun moduulin nimi tiedetään vain suorituksen aikana, kuten esimerkiksi laajennuksia ladattaessa. Se palauttaa moduuliobjektin, joten voit käyttää sen funktioita normaalin tuonnin tapaan.

Koneoppimiskoodi tuo NumPyn, pandasin, scikit-learnin, TensorFlow'n ja Py:nTorch moduuleina. Tiimit jakavat myös omat provisions-tiedostonsa uudelleenkäytettäviksi moduuleiksi ja paketeiksi ja tuovat sitten jaettuja esikäsittely- ja koulutusfunktioita skriptien välillä.

Kyllä. GitHub Copilot ja agenttiavustajat ehdottavat tuontirivejä kirjoittaessasi, lisäävät puuttuvia tuontitietoja ja auttavat ratkaisemaan tuontivirheitä. Varmista aina, että moduuli on asennettu ja nimi vastaa ympäristöäsi, ennen kuin luotat ehdotukseen.

Tiivistä tämä viesti seuraavasti: