Impordi moodul sisse Python koos näidetega

Mis moodulid sisaldavad Python?

Moodul on pythoni koodiga fail. Kood võib olla muutujate, funktsioonide või määratletud 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 Pythonis mooduliks. Mooduli kasutamiseks peate selle importima import märksõna. Faili sees olevat funktsiooni või muutujaid saab mooduli importimisel kasutada mõnes teises failis. See funktsioon on saadaval teistes keeltes, näiteks masinakirjas, 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

Pythonis mooduli loomiseks järgige antud juhiseid.

Koodi testimiseks kasutatav kaustastruktuur on järgmine:

modtest/
	test.py
	display.py	

Step 1) Looge fail ja nimetage see 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 failist display.py fail moduletest.py, nagu allpool näidatud:

import test

Importimise ajal ei pea te mainima faili test.py, vaid lihtsalt faili nime.

Step 5) Seejärel saate välja kutsuda funktsiooni display_message() failist test.py failis display.py, peate kasutama funktsiooni mooduli_nimi.funktsiooni_nimi.

Näiteks test.display_message().

Import test
print(test.display_message())

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

Welcome to Guru99 Tutorials!

Klassi importimine Python

Varem oleme näinud lihtsat funktsiooniga moodulit. Siin luuakse klass ja suunatakse klassi teises failis.

Koodi testimise 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(), 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 pääseme Car.py kaudu kõikidele muutujatele ja funktsioonidele juurde, kasutades automoodulit.

Impordimooduli kasutamine alates

Täiskoodi importimise asemel saab moodulist importida vaid väikese osa moodulist, st ainult vajalikke funktsioone ja muutujate nimesid.

Kui soovite importida ainult teatud asju, saate soovitud 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	

Test.py-s 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 soovite funktsiooni display_message(). Imporditavale funktsioonile või muutujale pääseb otse juurde järgmiselt:

Faili nimi: display.py

from test import display_message
print(display_message())

Väljund:

Welcome to Guru99 Tutorials!

Nüüd, kui juhtute kasutama funktsiooni display_message1() , annab see veateate, et funktsioon pole määratletud, nagu allpool näidatud:

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

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

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

Kui kasutate mooduli sees olevatele muutujatele ja funktsioonidele viitamiseks lihtsalt mooduli nime, peab selle eesliide olema 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 nime testi kasutatakse funktsiooni ja muutujate viitamiseks moodulite testis.

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 pythoni sisseehitatud funktsioon. Dir() tagastab kõik omadused ja meetodid, sealhulgas antud objekti sisseehitatud omadused.

Nii et kui moodulis kasutatakse dir(), annab see teile moodulis olevad muutujad, funktsioonid.

Siin on näide dir()-st moodulil. Meil on klass nimega Car.py, impordime auto ja määrame väljundi nägemiseks dir().

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 Python. Proovime sama Json moodul, nagu on näidatud allolevas näites. See kuvab kõik 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 interpreter käsitleb seda paketina, peaks teie kataloogis olema fail init.py. Init.py teeb kataloogi paketina. Siin on paketi paigutus, mille kallal töötame.

Pakid sisse Python

Pakendi nimi on minu pakett. Paketiga töö alustamiseks looge kataloog nimega package/. Looge kataloogis tühi fail nimega __init__.py. Looge veel 3 faili module1.py, module2.py ja module3.py ning määrake funktsioonid, nagu on näidatud ekraanipildil. Siin on module1.py, module2.py ja module3.py üksikasjad

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

. pakendon kasutusvalmis. Nüüd kutsuge mis tahes faili sees olev pakett, nagu allpool näidatud: test.py:

Siin imporditakse mypackage.module1 ja sellele antakse varjunimi kui mod1. Samamoodi saate kasutada minu paketi teisi mooduleid module2.py ja module3.py.

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

Näitasime just paketti lihtsa mooduliga, mille sees on funktsioonid. Vastavalt oma projektile saate pakendada ka alampakette. Alamkaustad/ milles on määratletud klassidega moodulid.

Python Mooduli otsingutee

Täitmise ajal, kui python vastu tuleb impordi mooduli nimi, proovib tõlk mooduli asukohta leida. See otsib moodulit sisseehitatud moodulite loendist. Later üldiselt sys.path määratletud kataloogid.

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

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

Faili sys.path üksikasjad leiate, importides sys mooduli ja printides faili sys.path. See annab teile kataloogide loendi, nagu allpool näidatud:

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

Samuti saate teisendada mooduli nime lühemaks vormiks, andes sellele varjunime. Pseudonüümi saab teha märksõna abil.

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 kasutab test.py pseudonüümi failis display.py

Import test as t

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

Testmooduli jaoks kasutatav pseudonüüm on t. Seega saab faili test.py funktsioonile ja muutujatele viidata varjunime 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 minu projekt/. Sellel on kaks alamkausta pakett1 ja pakett2.

Kaustapaketil1 on kaks moodulit module1.py ja module2.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 oma mooduli tee otse projekti juurkaustast.

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

Funktsiooniga functionmyfunc1 töötamiseks peate importima järgmiselt:

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

Funktsiooniga myfunc3 töötamiseks peate 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:

  • Koodikontrolliks on mooduleid lihtne jälgida.
  • Lihtne kasutada ja väga otsekohene.
  • Kui projekt viiakse teisele teele, jääb import siiski samaks.

Absoluutse impordi kasutamise puudused

Siin on absoluutse impordi kasutamise puudused:

Puudused:

  • Imporditee võib muutuda väga pikaks, kui moodulid on pesastatud ja kui moodulite nimi on pikk.

Suhtelise impordi kasutamine

Võttes arvesse allpool mainitud sama kaustastruktuuri, näeme, kuidas importida sama suhtelise impordi abil.

Suhtelise impordi puhul on imporditav moodul suhteline praeguse asukohaga, mis on asukoht, kus impordiavaldus asub.

Süntaks

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

See on 2 punkti (..) enne mooduli nime, kui moodul asub praegusest asukohast ühe taseme võrra kõrgemal.

Viidates ülalmainitud kaustastruktuuri joonisele, on meil järgmised moodulid oma funktsiooniga, millele peame viidata.

  • 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 functionmyfunc1 töötamiseks peate importima järgmiselt:

from  .module1  import  myfunc1

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

from  .subpkg.module3  import  myfunc3

Suhtelise impordi eelised

Plussid:

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

Suhtelise impordi puudused

Puudused:

  • Suhtelist importi kasutades on koodi asukoha määramine keeruline

kokkuvõte

  • Import sisse Python aitab viidata koodile, st funktsioonidele/objektidele, mis on kirjutatud teise faili. Seda kasutatakse ka pythoni teekide/pakettide importimiseks, mis installitakse pip (pythoni paketihalduri) abil ja mida peate seejärel oma koodis kasutama.
  • Impordifunktsioonid on saadaval teistes keeltes, näiteks masinakirjas, JavaSkript, java, rubiin jne.
  • Moodul on python on näiteks faili sisse kirjutatud kood (test.py). Faili sees saate määrata muutujad, funktsioonid või klassi. Kogu fail muutub mooduliks ja selle saab koodile viitamiseks importida teise faili.
  • Mooduli funktsioonide abil saate oma koodi jagada erinevateks failideks, selle asemel, et kirjutada kõike ühte faili. Later, kasutades importi, saate viidata vajaliku faili sees olevale koodile.
  • Python on oma sisseehitatud moodulid ja ka välised teegid/paketid, mis on installitud kasutades a pythoni paketihaldur (pip), nt pandasid, NumPy jne nimetatakse mooduliteks.
  • Täieliku koodi importimise asemel saab moodulist importida vaid väikese osa moodulist, st moodulist ainult vajalikke funktsioone ja muutujate nimesid.
  • Samuti saate teisendada mooduli nime lühemaks vormiks, andes sellele varjunime. Pseudonüümi saab teha märksõna abil.
  • Pakett on kataloog, mille sees on määratletud kõik moodulid. Et teha a Python interpreter käsitleb seda paketina, peaks teie kataloogis olema fail __init.py. Init.py teeb kataloogi paketina. Siin on paketi paigutus, mille kallal töötame.
  • Täitmise ajal, kui python vastu tuleb impordi mooduli nimi, proovib tõlk mooduli asukohta leida. See otsib moodulit sisseehitatud moodulite loendist. Later üldiselt sys.path määratletud kataloogid.
  • Absoluutse impordi jaoks peate lisama kogu oma mooduli tee otse projekti juurkaustast.
  • Suhtelise impordi puhul on imporditav moodul suhteline praeguse asukohaga, mis on asukoht, kus impordiavaldus asub.