Impordi moodul sisse Python koos näidetega

⚡ Nutikas kokkuvõte

Import sisse Python võimaldab ühel failil teises failis määratletud muutujaid, funktsioone ja klasse taaskasutada. Moodul on lihtsalt .py-fail, samas kui pakett koondab seotud moodulid kataloogi, mida tähistab __init__.py-fail.

  • 🔘 Mis on moodul: Moodul on üks .py-fail, mis sisaldab muutujaid, funktsioone või klasse.
  • ☑️ impordi märksõna: import laeb terve mooduli; mooduli_nimi.funktsiooni_nimi kutsub välja selle liikmed.
  • Valikuline import: `from module import name` tõmbab sisse ainult vajalikud funktsioonid või muutujad.
  • 🧪 Varjunimed: import module alias lühendab pikki nimesid; from module import * näitab kõike.
  • 🛠️ Paketid ja teed: __init__.py muudab kausta paketiks; sys.path loetleb otsingu asukohad.
  • 🤖 Tehisintellekti töövood: Masinõppeprojektid impordivad NumPy, pandasid ja Py-dTorch moodulitena.

Impordi moodul sisse Python

Allolevad jaotised selgitavad mooduleid, pakette, erinevaid impordistiile ning seda, kuidas absoluutne ja suhteline importimine töötab. Python.

Mis moodulid sisaldavad Python?

Moodul on fail, millel on Python kood. Kood võib olla muutujate, funktsioonide või defineeritud klassi kujul. Failinimest saab mooduli nimi.

Näiteks kui teie failinimi on guru99.py, on mooduli nimi guru99. Mooduli funktsioonide abil saate oma koodi jagada erinevateks failideks, selle asemel, et kirjutada kõike ühte faili.

Mis on Python impordi moodul?

Faili peetakse mooduliks PythonMooduli kasutamiseks peate selle importima, kasutades import märksõna. Failis olevaid funktsioone või muutujaid saab mooduli importimise teel kasutada teises failis. See funktsioon on saadaval ka teistes keeltes, näiteks TypeScript, Javaskript, Java, Rubiin jne.

Kuidas moodulit luua ja importida Python?

Nüüd loome mooduli ja impordime selle teise faili.

Siin on mooduli loomise ja importimise voog, nagu on näidatud ekraanipildil:

Mooduli loomine ja importimine Python

Mooduli loomiseks järgige antud samme Python.

Koodi testimiseks kasutatav kaustastruktuur on järgmine:

modtest/
	test.py
	display.py	

Step 1) Loo fail ja pane sellele nimeks test.py

Step 2) Looge failis test.py funktsioon nimega display_message()

Def display_message():
    return "Welcome to Guru99 Tutorials!"

Step 3) Nüüd looge uus fail display.py.

Step 4) Importige display.py faili mooduli test.py fail, nagu allpool näidatud:

import test

Importimisel ei pea te test.py faili mainima, vaid piisab faili nimest.

Step 5) Seejärel saate kutsuda funktsiooni display_message() failist test.py faili display.py seest. Peate kasutama mooduli_nimi.funktsiooni_nimi.

Näiteks test.display_message().

Import test
print(test.display_message())

Step 6) Kui käivitate display.py, saate järgmise tulemuse Väljund:

Welcome to Guru99 Tutorials!

Klassi importimine Python

Varem nägime lihtsat funktsiooniga moodulit. Siin loome klassi ja viitame sellele teises failis.

Koodi testimiseks mõeldud kaustastruktuur on järgmine:

myproj/
	Car.py
	display.py

Looge fail nimega Car.py järgmise koodiga:

Faili nimi: 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) 

Failis Car.py on atribuudid brand_name, model ja manu_year. Klassi sees defineeritud funktsioonid on car_details(), get_Car_brand() ja get_Car_model().

Kasutagem nüüd faili Car.py moodulina teises failis nimega display.py.

Failinimi: 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())

Väljund:

BMW
Car brand is  BMW
Car model is  Z5
Car manufacture year is  2020
Car brand is  BMW
Car model is  Z5

Seega saame Car mooduli abil ligi kõigile Car.py muutujatele ja funktsioonidele.

Impordimooduli kasutamine alates

Saate importida ainult väikese osa moodulist, st ainult vajalikud funktsioonid ja muutujate nimed, selle asemel, et importida kogu kood.

Kui soovite importida ainult teatud asju, saate soovitud andmete importimiseks kasutada märksõna „from”.

Nii et süntaks on

from  module import your function_name , variables,... etc.

Koodi testimiseks kasutatav kaustastruktuur on järgmine:

modtest/
	test.py
	display.py	

Failis test.py on kaks funktsiooni, nagu näidatud:

Failinimi: test.py

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

Nüüd vajate funktsiooni display_message(). Imporditavale funktsioonile või muutujale pääseb otse ligi allpool näidatud viisil:

Faili nimi: display.py

from test import display_message
print(display_message())

Väljund:

Welcome to Guru99 Tutorials!

Kui nüüd kasutada funktsiooni display_message1(), siis kuvatakse allpool näidatud viisil tõrge, mis teatab, et funktsioon pole defineeritud:

from test import display_message
print(display_message1())

Väljund:

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

Kõik importimine moodulist

Importimine võimaldab teil importida kogu mooduli, kasutades importi, millele järgneb mooduli nimi, st failinimi või kasutatav teek.

süntaksit:

Import module

Või kasutades

from module import *

Koodi testimiseks kasutatav kaustastruktuur on järgmine:

modtest/
	test.py
	display.py	

Järgnevalt on toodud test.py koodi üksikasjad

my_name = "Guru99"
my_address = "Mumbai"

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

Impordimooduli kasutamine

Kasutades ainult impordimooduli nime, tuleb moodulisisestele muutujatele ja funktsioonidele viitamiseks neile ette lisada mooduli nimi.

Näide

Failinimi: display.py

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

Mooduli nimega test viidatakse moodulis olevatele funktsioonidele ja muutujatele.

Väljund:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Impordi kasutamine *

Vaatame näidet kasutamise kohta import *. Kasutades import *, on funktsioonidele ja muutujatele otse juurdepääs, nagu on näidatud allolevas näites:

from test import *

print(display_message())
print(display_message1())
print(my_name)
print(my_address)

Väljund:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Funktsioon dir( ).

dir() on sisseehitatud funktsioon PythonFunktsioon dir() tagastab kõik omadused ja meetodid, sealhulgas antud objekti sisseehitatud omadused.

Seega, kui moodulil kasutatakse funktsiooni dir(), annab see teile moodulis olevad muutujad ja funktsioonid.

Siin on näide funktsiooni dir() kasutamisest moodulil. Meil ​​on klass nimega Car.py, impordime klassi Car ja määrame selle funktsioonile dir(), et näha väljundit.

Koodi testimise kaustastruktuur on järgmine:

test prop/
	Car.py
	test.py	

Faili nimi: 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) 

Faili nimi: test.py

import Car

class_contents = dir(Car)
print(class_contents)

Väljund annab meile klassi nime ja kõik Car.py-s määratletud funktsioonid.

Samuti võite proovida kasutada dir() sisseehitatud moodulis, mis on saadaval PythonProovime sama ka Json moodulit, nagu on näidatud allolevas näites. See kuvab kõik moodulis saadaolevad omadused ja meetodid. Json moodul.

Import json
json_details = dir(json)
print(json_details)

Väljund:

['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']

Paketid

Pakett on kataloog, mille sees on määratletud kõik moodulid. Et teha a Python Tõlkija käsitleb seda paketina, teie kataloogis peaks olema fail __init__.py. __init__.py muudab kataloogi paketiks. Siin on paketi paigutus, mille kallal me töötama hakkame.

Pakid sisse Python

Pakendi nimi on minupakettPaketiga töötamise alustamiseks looge kataloog nimega mypackage/. Kataloogi sisse looge tühi fail nimega __init__.py. Looge veel 3 faili: module1.py, module2.py ja module3.py ning defineerige funktsioonid, nagu ekraanipildil näidatud. Siin on üksikasjad failide moodul1.py, moodul2.py ja moodul3.py kohta.

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

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

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

. pakend on kasutusvalmis. Nüüd kutsuge paketti mis tahes oma faili sees, nagu allpool test.py-s näidatud:

Siin imporditakse mypackage.module1 ja sellele antakse varjunimi kui režiim1Samamoodi saate kasutada ka teisi mooduleid module2.py ja module3.py paketist mypackage.

import mypackage.module1 as mod1

print(mod1.mod1_func1())
print(mod1.mod1_func2())
print(mod1.mod1_func2())

Väljund:

Welcome to Module1 function1
None
Welcome to Module1 function2
None
Welcome to Module1 function2
None

Me just demonstreerisime paketti lihtsa mooduliga, mille sees on funktsioonid. Vastavalt teie projektile saate luua ka pakette, millel on alampaketid, st alamkaustad, millel on moodulid ja määratletud klassid.

Python Mooduli otsingutee

Täitmise ajal, kui Python tuleb vastu impordi mooduli nimi, proovib interpreter moodulit leida. See otsib moodulit sisseehitatud moodulite loendist ja seejärel kõigist sys.path sees määratletud kataloogidest.

Kokkuvõtteks teeb tõlk mooduli leidmiseks järgmise otsingu:

  1. Teie praeguses kataloogis.
  2. Sisseehitatud moodulite loendis.
  3. sys.path kataloogide sees.

sys.path üksikasjade saamiseks importige sys moodul ja printige sys.path. See annab teile allpool näidatud kataloogide loendi:

importsys
print(sys.path)

Väljund:

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

Samuti saate muuta teed ja hoida katalooge vastavalt oma vajadustele.

Mooduli aliase kasutamine importimisel

Mooduli nime saab lühemaks muuta ka aliase abil. Aliase saab luua käsuga as märksõna.

süntaksit:

import filename as alias name

Koodi testimise kaustastruktuur on järgmine:

Mod test/
	test.py
	display.py	

Järgmine on test.py kood

my_name = "Guru99"
my_address = "Mumbai"

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

Nüüd kasutame test.py jaoks aliast failis display.py

Import test as t

print(t.display_message())
print(t.display_message1())
print(t.my_name)
print(t.my_address)

Testimooduli alias on t. Seega saab test.py funktsioonidele ja muutujatele viidata aliase t abil.

Väljund:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Absoluutne ja suhteline import Python

Nüüd teate, kuidas importida faili teise faili moodulina. Vaatame nüüd, kuidas hallata kaustades saadaolevaid faile. Kaustades olevaid faile saab importida kas absoluutse või suhtelise impordi abil.

Arvestage, et teil on projekti kausta struktuur, nagu allpool näidatud:

Absoluutne ja suhteline import Python

Juurkaust on myproject/. Sellel on kaks alamkausta: package1 ja package2.

Kaustas package1 on kaks moodulit: moodul1.py ja moodul2.py.

Kaustapaketil2 on üks klass myclass.py, alampaketi alampakett koos module3.py ja viimane module4.py.

  • Failis module1.py on funktsioon nimega myfunc1.
  • Failis module2.py on funktsioon nimega myfunc2.
  • Failis module3.py on funktsioon nimega myfunc3.
  • Failis module4.py on funktsioon nimega myfunc4.

Absoluutse impordi kasutamine

Absoluutse impordi jaoks peate lisama kogu mooduli tee otse projekti juurkaustast.

Vaatame nüüd, kuidas kasutada absoluutset importi, et viidata igas moodulis olevatele funktsioonidele.

Funktsiooniga myfunc1 töötamiseks peate selle importima järgmiselt:

from package1.module1  import  myfunc1
or
from package1 import module1
module1.myfunc1()  

Funktsiooniga myfunc3 töötamiseks peate selle importima järgmiselt:

from package1.subpkg.module3  import  myfunc3
or
from package1.subpkg import module3
module3.myfunc3()  

Absoluutse impordi kasutamise eelised ja puudused

Siin on absoluutse impordi kasutamise eelised:

  • See muutub lihtsaks tracPange moodulid koodi kontrollimiseks tagasi.
  • Lihtne kasutada ja väga otsekohene.
  • Kui projekt teisaldatakse teisele teele, jäävad imporditud andmed samaks.

Absoluutse impordi kasutamise puudused

Absoluutsete impordiväärtuste kasutamise puudused on järgmised:

  • Imporditee võib minna väga pikaks, kui moodulid on pesastatud ja moodulite nimed on pikad.

Suhtelise impordi kasutamine

Arvestades eespool mainitud kaustastruktuuri, näeme, kuidas seda importida suhtelise impordi abil.

Suhtelise impordi korral on imporditav moodul suhteline praeguse asukoha suhtes, st asukoha suhtes, kus impordilause asub.

Süntaks

Suhtelises impordis tuleb kasutades importimisel lisada mooduli nime ette punkt (.). Rohkem kui.

Kui moodul asub praegusest asukohast ühe taseme võrra kõrgemal, on mooduli nime ees kaks punkti (..).

Viidates ülalmainitud kaustastruktuuri joonisele, on meil järgmised moodulid koos nende funktsioonidega, millele peame viitama.

  • Failis module1.py on funktsioon nimega myfunc1.
  • Failis module2.py on funktsioon nimega myfunc2.
  • Failis module3.py on funktsioon nimega myfunc3.
  • Failis module4.py on funktsioon nimega myfunc4.

Funktsiooniga myfunc1 töötamiseks peate selle importima järgmiselt:

from  .module1  import  myfunc1

Funktsiooniga myfunc3 töötamiseks peate selle importima järgmiselt:

from  .subpkg.module3  import  myfunc3

Suhtelise impordi eelised

  • Suhtelise impordiga on lihtne töötada.
  • Praegusest asukohast saab importi lühendada absoluutimpordiga võrreldes.

Suhtelise impordi puudused

  • Suhtelise impordi abil on keeruline tractagasi sinna, kus kood asub.

KKK

Python Moodulit ei leita. Veenduge, et fail on õigesti kirjutatud, asub kaustas sys.path või praeguses kaustas ja pakett on installitud teie aktiivsesse virtuaalkeskkonda. Käivitage pip install, millele järgneb kolmanda osapoole moodulite paketi nimi.

Paigalda see esmalt koos pip, Python paketihaldur, näiteks pip install pandas. Kui see on teie keskkonda installitud, importige see tavapäraselt käsuga import pandas. Sisseehitatud moodulid nagu json ei vaja installimist.

Ringimport toimub siis, kui kaks moodulit impordivad teineteist, jättes ühe laadituks ainult osaliselt. Selle lahendamiseks ühendage jagatud kood, importige seda vajava funktsiooni sees või importige terve moodul konkreetsete nimede asemel.

See valvur käivitab koodi ainult faili otse käivitamisel, mitte importimisel. Ilma selleta käivitaks iga import mooduli tipptasemel laused uuesti. See hoiab korduvkasutatavad funktsioonid skriptilaadsest testkoodist eraldi.

Ei. Python käivitab mooduli üks kord, seejärel salvestab selle vahemällu sys.modules faili ja kasutab seda objekti hilisemaks importimiseks. Arendusprotsessi ajal uuesti laadimise sundimiseks kutsuge välja importlib.reload(module).

Kasuta importlib.import_module(“nimi”) funktsiooni, kui mooduli nimi on teada ainult töötamise ajal, näiteks pluginate laadimisel. See tagastab mooduliobjekti, nii et saad selle funktsioonidele ligi pääseda nagu tavalise importimise korral.

Masinõppe kood impordib NumPy, pandas, scikit-learn, TensorFlow ja PyTorch moodulitena. Meeskonnad jagavad omaenda torujuhtmed ka korduvkasutatavateks mooduliteks ja pakettideks ning impordivad seejärel skriptide vahel jagatud eeltöötlus- ja treeningfunktsioone.

Jah. GitHub Copilot ja agentide assistendid soovitavad impordiridu tippimise ajal, lisavad puuduvad imporditud read ja aitavad lahendada impordivigu. Enne soovituse usaldamist veenduge alati, et moodul on installitud ja nimi vastab teie keskkonnale.

Võta see postitus kokku järgmiselt: