Uvozi modul v Pythonu s primeri

Kazalo:

Anonim

Kateri so moduli v Pythonu?

Modul je datoteka s kodo python. Koda je lahko v obliki spremenljivk, funkcij ali razreda. Ime datoteke postane ime modula.

Če je na primer vaše ime datoteke guru99.py, bo ime modula guru99 . S funkcijo modula lahko svojo kodo razbijete na različne datoteke, namesto da bi zapisali vse v eno datoteko.

V tej vadnici boste izvedeli:

  • Kateri so moduli v Pythonu?
  • Uvozni modul Python
  • Kako ustvariti in uvoziti modul v Pythonu?
  • Uvoz predavanja v Python
  • Uporaba modula za uvoz
  • Uvozite vse iz modula
  • Uporaba modula za uvoz
  • Uporaba uvoza *
  • Funkcija dir ()
  • Paketi
  • PythonModuleSearchPath
  • Uporaba vzdevka modula pri uvozu
  • Absolutni in relativni uvoz v Python
  • Uporaba absolutnega uvoza
  • Uporaba RelativImports

Kaj je modul za uvoz Python?

Datoteka se šteje kot modul v pythonu. Če želite uporabljati modul, ga morate uvoziti s pomočjo ključne besede import . Funkcijo ali spremenljivke, ki so znotraj datoteke, lahko z uvozom modula uporabite v drugi datoteki. Ta funkcija je na voljo v drugih jezikih, kot so tipkopis, JavaScript, Java, ruby ​​itd.

Kako ustvariti in uvoziti modul v Pythonu?

Zdaj bomo ustvarili modul in ga uvozili v drugo datoteko.

Tu je postopek za ustvarjanje in uvoz modula, kot je prikazano na posnetku zaslona:

Sledite navodilom za ustvarjanje modula v pythonu.

Struktura map, ki se uporablja za testiranje kode, je naslednja:

modtest/test.pydisplay.py

Korak 1) Ustvarite datoteko in jo poimenujte test.py

2. korak) V test.py ustvarite funkcijo, imenovano display_message ()

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

Korak 3) Zdaj ustvarite novo datoteko display.py.

4. korak) Znotraj display.py uvozite datoteko moduletest.py, kot je prikazano spodaj:

import test

Med uvozom vam ni treba omeniti test.py, temveč samo ime datoteke.

5. korak)

Potem lahko prikličete funkcijo display_message () iz test.py znotraj display.py, uporabiti morate ime_imena.funkcija_ime.

Na primer test.display_message ().

Import testprint(test.display_message())

6. korak)

Ko zaženete display.py, boste dobili naslednji izhod:

Welcome to Guru99 Tutorials!

Uvoz predavanja v Python

Prej smo videli preprost modul s funkcijo. Tu bo ustvaril razred in ga napotil v drugo datoteko.

Struktura map za preizkus kode je naslednja:

myproj/Car.pydisplay.py

Ustvarite datoteko z imenom Car.py z naslednjo kodo:

Ime datoteke: 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)

V datoteki Car.py so atributi brand_name, model in manu_year. Funkcije, opredeljene v razredu, so car_details (), get_Car_brand (), get_Car_model ().

Zdaj uporabimo datoteko Car.py kot modul v drugi datoteki, imenovani display.py.

Ime datoteke: 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())

Izhod:

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

Tako lahko do vseh spremenljivk in funkcij dostopamo s strani Car.py z uporabo modula Car.

Uporaba modula za uvoz

Namesto uvoza celotne kode lahko iz modula uvozite le majhen del modula, tj. Samo zahtevane funkcije in imena spremenljivk.

Če želite uvoziti samo določene stvari, lahko s ključno besedo »from« uvozite, kar želite.

Sintaksa je torej

from module import your function_name , variables,… etc.

Struktura map, ki se uporablja za testiranje kode, je naslednja:

modtest/test.pydisplay.py

V test.py sta prikazani dve funkciji:

Ime datoteke: test.py

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

Zdaj želite funkcijo display_message (). Do funkcije ali spremenljivke, ki jo uvažate, je mogoče neposredno dostopati, kot je prikazano spodaj:

Ime datoteke: display.py

from test import display_messageprint(display_message())

Izhod:

Welcome to Guru99 Tutorials!

Zdaj, če slučajno uporabljate funkcijo display_message1 (), se prikaže napaka, da funkcija ni definirana, kot je prikazano spodaj:

from test import display_messageprint(display_message1())

Izhod:

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

Uvozite vse iz modula

Uvoz vam omogoča uvoz celotnega modula z uporabo uvoza, ki mu sledi ime modula, tj. Ime datoteke ali knjižnica, ki jo želite uporabiti.

Sintaksa:

Import module

Ali z uporabo

from module import *

Struktura map, ki se uporablja za testiranje kode, je naslednja:

modtest/test.pydisplay.py

Sledijo podrobnosti o kodi v test.py

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

Uporaba modula za uvoz

Z uporabo samo imena modula za sklicevanje na spremenljivke in funkcije v modulu mora predpona dodati ime modula.

Primer

Ime datoteke: display.py

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

Preizkus imena modula se uporablja za sklicevanje na funkcijo in spremenljivke znotraj testa modula.

Izhod:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Uporaba uvoza *

Oglejmo si primer z uvozom * . Z uporabo uvoza * so funkcije in spremenljivke neposredno dostopne, kot je prikazano v spodnjem primeru:

from test import *print(display_message())print(display_message1())print(my_name)print(my_address)

Izhod:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Funkcija dir ()

Dir () je vgrajena funkcija v pythonu. Dir () vrne vse lastnosti in metode, vključno z vgrajenimi lastnostmi določenega predmeta.

Torej, ko se v modulu uporablja dir (), vam bo dal spremenljivke, funkcije, ki so prisotne znotraj modula.

Tu je delovni primer dir () na modulu. Imamo razred z imenom Car.py, uvozimo Car in ga dir (dir) določimo za prikaz izhoda.

Struktura map za preizkus kode bo naslednja:

test prop/Car.pytest.py

Ime datoteke: 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)

Ime datoteke: test.py

import Carclass_contents = dir(Car)print(class_contents)

Izhodni podatki nam dajo ime razreda in vse funkcije, opredeljene v Car.py.

Lahko poskusite uporabiti tudi dir () na vgrajenem modulu, ki je na voljo v Pythonu. Poskusimo enako na json modulu, kot je prikazano v spodnjem primeru. Prikazala bo vse lastnosti in metode, ki so na voljo v modulu json .

Import jsonjson_details = dir(json)print(json_details)

Izhod:

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

Paketi

Paket je imenik, v katerem so definirani vsi moduli. Če želite, da tolmač Python obravnava kot paket, mora imeti vaš imenik datoteko init.pyfile. Init.py naredi imenik kot paket. Tu je postavitev paketa, na katerem bomo nadaljevali.

Ime paketa je moj paket . Če želite začeti delati s paketom, ustvarite imenik z imenom package /. V imeniku ustvarite prazno datoteko z imenom __init__.py. Ustvarite še 3 datoteke module1.py, module2.py in module3.py in določite funkcije, kot je prikazano na posnetku zaslona. Tu so podrobnosti o module1.py, module2.py in 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")

Paket S pripravljen za uporabo. Zdaj pokličite paket znotraj katere koli datoteke, kot je prikazano spodaj: test.py:

Tu je mypackage.module1 uvožen in mu je vzdevek dodeljen kot mod1. Podobno lahko uporabite tudi druge module module2.py in module3.py iz mojega paketa.

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

Izhod:

Welcome to Module1 function1NoneWelcome to Module1 function2NoneWelcome to Module1 function2None

Pravkar smo demonstrirali paket s preprostim modulom s funkcijami v njem. Glede na vaš projekt lahko pakirate tudi s podpaketi. Podmape / z moduli z opredeljenimi razredi.

Pot iskanja modula Python

Med izvajanjem, ko python naleti na ime modula za uvoz , tolmač poskuša najti modul. Išče modul na seznamu vgrajenih modulov. Kasneje so bili imeniki, definirani znotraj sys.path.

Če povzamemo, tolmač za iskanje modula izvede naslednje iskanje:

  1. V trenutnem imeniku.
  2. Na seznamu vgrajenih modulov
  3. Znotraj imenikov sys.path

Podrobnosti o sys.path lahko dobite z uvozom modula sys in natisnete sys.path. Prikazal vam bo seznam imenikov, kot je prikazano spodaj:

importsysprint(sys.path)

Izhod:

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

Lahko tudi spremenite pot in shranite imenike v skladu z vašimi zahtevami.

Uporaba vzdevka modula pri uvozu

Ime modula lahko pretvorite tudi v krajši obrazec, tako da mu dodate vzdevek. Vzdevek lahko naredite s ključno besedo.

Sintaksa:

import filename as alias name

Struktura map za preizkus kode bo naslednja:

Mod test/test.pydisplay.py

Sledi koda v test.py

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

Zdaj bo uporabil vzdevek za test.py v display.py

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

Vzdevek, ki se uporablja za testni modul, je t. Tako lahko funkcijo in spremenljivke iz test.py napotimo z vzdevkom t.

Izhod:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Absolutni in relativni uvoz v Python

Zdaj veste, kako datoteko uvozite kot modul v drugo datoteko. Poglejmo zdaj, kako upravljati datoteke, ki so na voljo v mapah. Datoteke v mapah lahko uvozite z absolutnim ali relativnim uvozom.

Razmislite o strukturi map projekta, kot je prikazano spodaj:

Koren mapa je moj projekt /. Ima dve podmapi paket1 in paket2.

Mapa package1 ima dva modula, module1.py in module2.py.

Mapa package2 ima en razred myclass.py, podpaket subpkg z module3.py in zadnji module4.py.

  • V module1.py je funkcija, imenovana myfunc1.
  • V module2.py je funkcija, imenovana myfunc2.
  • V module3.py je funkcija, imenovana myfunc3.
  • V module4.py je funkcija, imenovana myfunc4.

Uporaba absolutnega uvoza

Za Absolutni uvoz morate dodati celotno pot modula neposredno iz korenske mape projekta.

Poglejmo zdaj, kako izkoristiti absolutni uvoz za sklicevanje na funkcije v vsakem modulu.

Če želite delati s funkcijo myfunc1, boste morali uvoziti na naslednji način:

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

Za delo s funkcijo myfunc3 boste morali uvoziti, kot sledi:

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

Prednosti in slabosti uporabe absolutnega uvoza

Tu so prednosti uporabe absolutnega uvoza:

  • Postalo je enostavno slediti modulom za preverjanje kode.
  • Enostaven za uporabo in zelo enostaven.
  • Če projekt premaknemo na drugo pot, bo uvoz še vedno enak.

Slabosti uporabe absolutnega uvoza

Tu so slabosti uporabe absolutnega uvoza:

Slabosti:

  • Uvozna pot je lahko v primeru zelo dolga, moduli so ugnezdeni in če je ime modulov dolgo.

Uporaba relativnega uvoza

Glede na isto strukturo map, omenjeno spodaj, bomo videli, kako jo lahko uvozimo z relativnim uvozom.

Pri relativnem uvozu je modul, ki ga je treba uvoziti, glede na trenutno lokacijo, ki je lokacija, kjer je prisoten stavek o uvozu.

Sintaksa:

Pri relativnem uvozu morate pred imenom modula dodati točko (.) Pri uvozu z uporabo iz .

Pred modulom bosta dve točki (…), če je modul v višini od trenutne lokacije.

Glede na zgoraj omenjeno sliko strukture map imamo naslednje module z njihovo funkcijo, na katere se moramo sklicevati.

  • V module1.py je funkcija, imenovana myfunc1.
  • V module2.py je funkcija, imenovana myfunc2.
  • V module3.py je funkcija, imenovana myfunc3.
  • V module4.py je funkcija, imenovana myfunc4.

Za delo s funkcijo myfunc1 boste morali uvoziti na naslednji način:

from .module1 import myfunc1

Če želite delati s funkcijo myfunc3, morate uvoziti na naslednji način:

from .subpkg.module3 import myfunc3

Prednosti relativnega uvoza

Prednosti:

  • Z relativnim uvozom je enostavno delati.
  • S trenutne lokacije se lahko uvoz skrajša v primerjavi z absolutnim uvozom.

Slabosti relativnega uvoza

Slabosti:

  • Z uporabo relativnega uvoza je težko izslediti, kje je koda

Povzetek:

  • Uvoz v Python vam pomaga pri sklicevanju na kodo, tj. .Funkcije / predmete, ki so zapisani v drugi datoteki. Uporablja se tudi za uvoz knjižnic / paketov python, ki so nameščeni s pomočjo pip (upravitelj paketov python), nato pa jih morate uporabiti v svoji kodi.
  • Funkcija uvoza je na voljo v drugih jezikih, kot so tipkopis, JavaScript, Java, ruby ​​itd.
  • Modul je python je koda, zapisana na primer v datoteki (test.py). V datoteki lahko določite spremenljivke, funkcije ali razred. Celotna datoteka postane modul in jo je mogoče uvoziti v drugo datoteko, da se sklicuje na kodo.
  • S funkcijo modula lahko svojo kodo razbijete na različne datoteke, namesto da bi zapisali vse v eno datoteko. Kasneje se lahko z uvozom sklicujete na kodo v datoteki, ki jo potrebujete.
  • Python ima vgrajene module, zunanje knjižnice / paketi, nameščeni s pomočjo upravitelja paketov python (pip), npr. Pande, NumPy itd., Se imenujejo moduli.
  • Namesto uvoza celotne kode lahko iz modula uvozite le majhen del modula, tj. Samo zahtevane funkcije in imena spremenljivk.
  • Ime modula lahko pretvorite tudi v krajši obrazec, tako da mu dodate vzdevek. Vzdevek lahko naredite s ključno besedo.
  • Paket je imenik, v katerem so definirani vsi moduli. Če želite, da tolmač Python obravnava kot paket, mora imeti vaš imenik datoteko __init.py. Init.py naredi imenik kot paket. Tu je postavitev paketa, na katerem bomo nadaljevali.
  • Med izvajanjem, ko python naleti na ime modula za uvoz , tolmač poskuša najti modul. Išče modul na seznamu vgrajenih modulov. Kasneje so bili imeniki, definirani znotraj sys.path.
  • Za Absolutni uvoz morate dodati celotno pot modula neposredno iz korenske mape projekta.
  • Pri relativnem uvozu je modul, ki ga je treba uvoziti, glede na trenutno lokacijo, ki je lokacija, kjer je prisoten stavek o uvozu.