Impordi moodul Pythonis koos näidetega

Lang L: none (table-of-contents):

Anonim

Mis on Pythoni moodulid?

Moodul on Pythoni koodiga fail. Kood võib olla määratletud muutujate, funktsioonide või klassi kujul. Failinimest saab mooduli nimi.

Näiteks kui teie failinimi on guru99.py, on mooduli nimi guru99 . Mooduli funktsionaalsuse abil saate koodi jagada erinevateks failideks, selle asemel et kõik ühes failis kirjutada.

Selles õpetuses saate teada:

  • Mis on Pythoni moodulid?
  • Pythoni impordimoodul
  • Kuidas Pythonis moodulit luua ja importida?
  • Klassi importimine Pythonis
  • Kasutamine moodulist importimiseks
  • Kõik moodulist importimine
  • Impordimooduli kasutamine
  • Impordi kasutamine *
  • Dir () funktsioon
  • Paketid
  • PythonModuleSearchPath
  • Mooduli varjunime kasutamine importimisel
  • Absoluutne ja suhteline import Pythonis
  • AbsoluteImports'i kasutamine
  • RelativeImports'i kasutamine

Mis on Pythoni impordimoodul?

Faili peetakse Pythoni mooduliks. Mooduli kasutamiseks on teil importida, kasutades impordi märksõna. Faili sees asuvat funktsiooni või muutujaid saab mooduli importides kasutada teises failis. See funktsioon on saadaval teistes keeltes, näiteks masinakiri, JavaScripti, Java, Ruby jne.

Kuidas Pythonis moodulit luua ja importida?

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

Siin on vool mooduli loomiseks ja importimiseks, nagu ekraanipildil näidatud:

Püütonis mooduli loomiseks toimige järgmiselt.

Koodi testimiseks kasutatav kaustade struktuur on järgmine:

modtest/test.pydisplay.py

Samm 1) Looge fail ja andke sellele nimi test.py

2. samm. Looge test.py sees funktsioon nimega display_message ()

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

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

Samm 4) Toote display.py sees importige moduletest.py fail, nagu allpool näidatud:

import test

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

5. samm)

Seejärel saate helistada funktsioonile display_message () saidilt test.py display.py seest, peate kasutama mooduli_nimi.funktsiooni_nimi.

Näiteks test.display_message ().

Import testprint(test.display_message())

6. samm)

Kui käivitate display.py, saate järgmise väljundi:

Welcome to Guru99 Tutorials!

Klassi importimine Pythonis

Varem oleme näinud lihtsat funktsiooniga moodulit. Siin luuakse klass ja suunatakse klass teise faili sisse.

Koodi testimiseks on kaustade struktuur järgmine:

myproj/Car.pydisplay.py

Looge fail 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_nameself.model = modelself.manu_year = manu_yeardef 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)

Car.py failis on atribuudid brand_name, model ja manu_year. Klassi sees määratletud 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 Carcar_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:

BMWCar brand is BMWCar model is Z5Car manufacture year is 2020Car brand is BMWCar model is Z5

Seega pääseme Car.py kaudu kõikidele muutujatele ja funktsioonidele juurde, kasutades moodulit Car.

Kasutamine moodulist importimiseks

Täieliku koodi importimise asemel saate moodulist importida ainult väikese osa, st ainult vajalikud funktsioonid ja muutujate nimed.

Kui soovite importida ainult konkreetseid asju, saate soovitud andmete importimiseks kasutada märksõna "alates".

Nii et süntaks on

from module import your function_name , variables,… etc.

Koodi testimiseks kasutatav kaustade struktuur on järgmine:

modtest/test.pydisplay.py

Test.py-s on 2 näidatud funktsiooni:

Faili nimi: 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, nagu allpool näidatud:

Faili nimi: display.py

from test import display_messageprint(display_message())

Väljund:

Welcome to Guru99 Tutorials!

Kui juhtute kasutama funktsiooni display_message1 (), viskab see vea, et funktsiooni pole defineeritud nagu allpool näidatud:

from test import display_messageprint(display_message1())

Väljund:

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

Kõik moodulist importimine

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

Süntaks:

Import module

Või kasutades

from module import *

Koodi testimiseks kasutatav kaustade struktuur on järgmine:

modtest/test.pydisplay.py

Järgnevalt leiate koodi üksikasjad test.py-s

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

Impordimooduli kasutamine

Kasutades lihtsalt mooduli nime importimist, peab moodulis olevate muutujate ja funktsioonide viitamiseks olema eesliide mooduli nimega.

Näide

Failinimi: display.py

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

Mooduli nime testi kasutatakse funktsiooni ja muutujate viitamiseks mooduli testi sees.

Väljund:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Impordi kasutamine *

Vaatame näidet, kasutades impordi * . Kasutades import * funktsioonid ja muutujad on otseselt kättesaadav, nagu on näidatud alltoodud 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!Guru99Mumbai

Dir () funktsioon

Dir () on Pythoni sisseehitatud funktsioon. Dir () tagastab kõik atribuudid ja meetodid, sealhulgas antud objekti sisseehitatud atribuudid.

Nii et kui moodulil kasutatakse dir (), annab see teile mooduli sees olevad muutujad, funktsioonid.

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

Koodi testimiseks on kaustade struktuur järgmine:

test prop/Car.pytest.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_nameself.model = modelself.manu_year = manu_yeardef 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 Carclass_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 () Pythonis saadaval olevas sisseehitatud moodulis. Proovime jsoni moodulil sama, mis on näidatud allpool toodud näites. See kuvab kõik jsoni moodulis saadaolevad omadused ja meetodid .

Import jsonjson_details = dir(json)print(json_details)

Väljund:

['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_encoder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']

Paketid

Pakett on kataloog, mille kõik moodulid on määratletud. Kui soovite, et Pythoni interpretaator tõlgendaks seda paketina, peaks teie kataloogis olema init.pyfile. Init.py teeb kataloogi paketina. Siin on paketi paigutus, millega hakkame töötama.

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

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

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

Paketi s kasutamiseks valmis. Nüüd helistage mis tahes faili paketile, nagu allpool näidatud: test.py:

Siin imporditakse mypackage.module1 ja sellele antakse varjunimi mod1. Samamoodi saate minu paketist kasutada ka muid mooduleid module2.py ja module3.py.

import mypackage.module1 as mod1print(mod1.mod1_func1())print(mod1.mod1_func2())print(mod1.mod1_func2())

Väljund:

Welcome to Module1 function1NoneWelcome to Module1 function2NoneWelcome to Module1 function2None

Oleme lihtsalt demonstreerinud paketti koos lihtsa mooduliga, mille funktsioonid on sees. Vastavalt teie projektile saate pakendada ka alampakette. Alamkaustad / millel on määratletud klassidega moodulid.

Pythoni mooduli otsingu tee

Kui python satub impordimooduli nimele , proovib tõlk käivitamise ajal mooduli asukohta leida. See otsib moodulit sisseehitatud moodulite loendis. Hiljem määratlesid kataloogid sys.pathi sees.

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

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

Üksuse sys.path üksikasjad saate importida sys-mooduli ja printida sys.path. See annab teile kataloogide loendi, nagu allpool näidatud:

importsysprint(sys.path)

Väljund:

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

Samuti saate muuta teed ja hoida katalooge vastavalt oma vajadustele.

Mooduli varjunime kasutamine importimisel

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

Süntaks:

import filename as alias name

Koodi testimiseks on kaustade struktuur järgmine:

Mod test/test.pydisplay.py

Järgmine on kood test.py sees

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

Nüüd kasutab sait test.py saidil display.py varjunime

Import test as tprint(t.display_message())print(t.display_message1())print(t.my_name)print(t.my_address)

Testmooduli varjunimi on t. Nii saab funktsiooni ja test.py muutujate abil kasutada varjunime t.

Väljund:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Absoluutne ja suhteline import Pythonis

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

Mõelge, et teil on oma projekti kausta struktuur, nagu allpool näidatud:

Juurkaust on minu projekt /. Sellel on kaks alamkausta package1 ja package2.

Kaustas package1 on kaks moodulit, module1.py ja module2.py.

Kaustas package2 on üks klass myclass.py, alampaketi subpkg koos module3.py ja viimane module4.py.

  • Moodulis1.py on funktsiooncalledmyfunc1.
  • Moodulis2.py on funktsiooncalledmyfunc2.
  • Moodulis3.py on funktsiooncalledmyfunc3.
  • Moodulis4.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 sisalduvatele funktsioonidele.

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

from package1.module1 import myfunc1orfrom package1 import module1module1.myfunc1()

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

from package1.subpkg.module3 import myfunc3orfrom package1.subpkg import module3module3.myfunc3()

Absoluutse impordi kasutamise eelised ja puudused

Siin on absoluutse impordi kasutamise eelised:

  • Moodulite jälitamine koodi kontrollimiseks muutub lihtsaks.
  • Lihtne kasutada ja väga lihtne.
  • Kui projekt viiakse teisele teele, jääb import endiselt samaks.

Absoluutse impordi kasutamise puudused

Siin on absoluutse impordi kasutamise puudused:

Puudused:

  • Impordi tee võib pikaks venitada, moodulid on pesastatud ja kui moodulite nimi on pikk.

Suhtelise impordi kasutamine

Arvestades sama allpool mainitud kaustade struktuuri, näeme, kuidas sama importida suhtelise impordi abil.

Suhtelise impordi korral on imporditav moodul praeguse asukoha, see on impordilause olemasolu koht.

Süntaks:

Suhtelises impordis peate alates punktist importimisel lisama punkti (.) Enne mooduli nime .

Mooduli nime ees on kaks perioodi (…), kui moodul asub praegusest asukohast ühe taseme võrra kõrgemal.

Eespool mainitud kaustade struktuuri joonisele viidates on meil järgmised funktsioonidega moodulid, millele peame viitama.

  • Moodulis1.py on funktsiooncalledmyfunc1.
  • Moodulis2.py on funktsiooncalledmyfunc2.
  • Moodulis3.py on funktsiooncalledmyfunc3.
  • Moodulis4.py on funktsioon nimega myfunc4.

Funktsiooniga mymunc1 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

Eelised:

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

Suhtelise impordi puudused

Puudused:

  • Suhtelise impordi abil on raske leida koodi asukohta

Kokkuvõte:

  • Import Pythonis aitab teil viidata koodile, st .funktsioonidele / objektidele, mis on kirjutatud teise faili. Seda kasutatakse ka pyponi teekide / pakettide importimiseks, mis on installitud pipi abil (pythoni paketihaldur) ja peate seejärel oma koodis kasutama.
  • Impordifunktsioonid on saadaval teistes keeltes, näiteks masinakiri, JavaScripti, Java, Ruby jne.
  • Moodul on python on näiteks faili sisse kirjutatud kood (test.py). Failis saate lasta määratleda muutujad, funktsioonid või klass. Kogu fail muutub mooduliks ja selle saab koodile viitamiseks teise faili sisse importida.
  • Mooduli funktsionaalsuse abil saate koodi jaotada erinevateks failideks, selle asemel et kirjutada kõik ühte faili. Hiljem saate importimise abil viidata vajaliku faili sees olevale koodile.
  • Pythonis on sisseehitatud moodulid ning ka Pythoni paketihalduri (pip) abil installitud väliseid teeke / pakette, nt pandasid, NumPy jne, nimetatakse mooduliteks.
  • Täieliku koodi importimise asemel saate moodulist importida ainult väikese osa, st ainult vajalikud funktsioonid ja muutujate nimed.
  • Mooduli nime saate teisendada ka lühemaks, andes sellele varjunime. Pseudonüümi saab teha märksõna abil.
  • Pakett on kataloog, mille kõik moodulid on määratletud. Kui soovite, et Pythoni interpretaator tõlgendaks seda paketina, peaks teie kataloogil olema __init.pyfile. Init.py teeb kataloogi paketina. Siin on paketi paigutus, millega hakkame töötama.
  • Kui python satub impordimooduli nimele , proovib tõlk käivitamise ajal mooduli asukohta leida. See otsib moodulit sisseehitatud moodulite loendis. Hiljem määratlesid kataloogid sys.pathi sees.
  • Absoluutse impordi jaoks peate lisama kogu mooduli tee otse projekti juurkaustast.
  • Suhtelise impordi korral on imporditav moodul praeguse asukoha, see on impordilause olemasolu koht.