Importuoti „Python“ modulį su pavyzdžiais

Turinys:

Anonim

Kokie yra „Python“ moduliai?

Modulis yra failas su pitono kodu. Kodas gali būti apibrėžtų kintamųjų, funkcijų ar klasės pavidalu. Failo pavadinimas tampa modulio pavadinimu.

Pvz., Jei jūsų failo vardas yra guru99.py, modulio pavadinimas bus guru99 . Naudodami modulio funkciją, galite suskaidyti kodą į skirtingus failus, užuot viską įrašę vieno failo viduje.

Šioje pamokoje sužinosite:

  • Kokie yra „Python“ moduliai?
  • „Python“ importo modulis
  • Kaip sukurti ir importuoti „Python“ modulį?
  • Klasės importavimas „Python“
  • Naudojant nuo importavimo modulio
  • Importuoti viską iš modulio
  • Naudojant importavimo modulį
  • Naudojant importavimą *
  • Dir () funkcija
  • Paketai
  • „PythonModuleSearchPath“
  • Modulio slapyvardžio naudojimas importuojant
  • Absoliutus ir santykinis importas į „Python“
  • „AbsoluteImports“ naudojimas
  • „RelativeImports“ naudojimas

Kas yra „Python“ importavimo modulis?

Failas yra laikomas python modulis. Norėdami naudoti modulį, turite jį importuoti naudodami importavimo raktinį žodį. Faile esančią funkciją ar kintamuosius galima naudoti kitame faile importuojant modulį. Ši funkcija pasiekiama kitomis kalbomis, pvz., Mašinraščiu, „JavaScript“, „Java“, „ruby“ ir kt.

Kaip sukurti ir importuoti „Python“ modulį?

Dabar sukursime modulį ir importuosime jį į kitą failą.

Čia pateikiamas srautas kuriant ir importuojant modulį, kaip parodyta ekrano kopijoje:

Norėdami sukurti modulį „Python“, atlikite nurodytus veiksmus.

Kodo testavimui naudojama aplankų struktūra yra tokia:

modtest/test.pydisplay.py

1 žingsnis) Sukurkite failą ir pavadinkite jį test.py

2 žingsnis) Test.py viduje sukurkite funkciją, vadinamą display_message ()

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

3 žingsnis) Dabar sukurkite kitą failą display.py.

4 žingsnis. Viduje display.py importuokite moduletest.py failą, kaip parodyta žemiau:

import test

Importuodami turite nurodyti ne test.py, o tik failo pavadinimą.

5 žingsnis)

Tada galite paskambinti funkcija display_message () iš test.py viduje display.py, turite pasinaudoti module_name.function_name.

Pavyzdžiui, test.display_message ().

Import testprint(test.display_message())

6 žingsnis)

Vykdydami display.py gausite tokį išvestį:

Welcome to Guru99 Tutorials!

Klasės importavimas „Python“

Anksčiau mes matėme paprastą modulį su funkcija. Čia sukursite klasę ir nurodysite klasę kitame faile.

Aplanko struktūra, skirta patikrinti kodą, yra tokia:

myproj/Car.pydisplay.py

Sukurkite failą pavadinimu Car.py su šiuo kodu:

Failo pavadinimas: 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 faile yra atributai prekės ženklo pavadinimas, modelis ir gamintojo metai. Klasės viduje apibrėžtos funkcijos yra car_details (), get_Car_brand (), get_Car_model ().

Dabar naudokime failą Car.py kaip modulį kitame faile, vadinamame display.py.

Failo pavadinimas: 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())

Išvestis:

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

Taigi mes galime pasiekti visus kintamuosius ir funkcijas iš „Car.py“ naudodami „Car“ modulį.

Naudojant nuo importavimo modulio

Iš viso modulio galite importuoti tik nedidelę modulio dalį, ty tik reikalingas funkcijas ir kintamųjų pavadinimus, užuot importavę visą kodą.

Jei norite, kad būtų importuojami tik konkretūs dalykai, galite naudoti raktinį žodį „nuo“ norėdami importuoti tai, ko norite.

Taigi sintaksė yra

from module import your function_name , variables,… etc.

Kodo testavimui naudojama aplankų struktūra yra tokia:

modtest/test.pydisplay.py

Programoje test.py yra 2 funkcijos, kaip parodyta:

Failo pavadinimas: test.py

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

Dabar norite funkcijos display_message (). Importuojamą funkciją ar kintamąjį galima tiesiogiai pasiekti, kaip parodyta žemiau:

Failo pavadinimas: display.py

from test import display_messageprint(display_message())

Išvestis:

Welcome to Guru99 Tutorials!

Dabar, jei atsitiktų naudoti funkciją display_message1 (), tai sukels klaidą, kad funkcija nėra apibrėžta taip, kaip parodyta žemiau:

from test import display_messageprint(display_message1())

Išvestis:

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

Importuoti viską iš modulio

Importas leidžia importuoti visą modulį naudojant importą ir modulio pavadinimą, ty failo pavadinimą arba biblioteką, kurią norite naudoti.

Sintaksė:

Import module

Arba naudojant

from module import *

Kodo testavimui naudojama aplankų struktūra yra tokia:

modtest/test.pydisplay.py

Toliau pateikiama išsami kodo informacija test.py viduje

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

Naudojant importavimo modulį

Naudojant tik importo modulio pavadinimą, norint nurodyti modulio kintamuosius ir funkcijas, jis turi priešdėlį su modulio pavadinimu.

Pavyzdys

Failo pavadinimas: display.py

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

Modulio pavadinimo testas naudojamas norint nurodyti funkciją ir kintamuosius modulio teste.

Išvestis:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Naudojant importavimą *

Pažiūrėkime pavyzdį naudodami importavimą * . Naudojant importavimą * , funkcijos ir kintamieji yra tiesiogiai prieinami, kaip parodyta toliau pateiktame pavyzdyje:

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

Išvestis:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Dir () funkcija

Dir () yra įmontuota pitono funkcija. Dir () grąžina visas ypatybes ir metodus, įskaitant duoto objekto integruotas savybes.

Taigi, kai module naudojamas dir (), jis suteiks jums kintamuosius, funkcijas, esančias modulio viduje.

Štai modulio dir () pavyzdys. Mes turime klasę, vadinamą Car.py, importuokime „Car“ ir priskirkime „dir“ (), kad pamatytume išvestį.

Aplanko struktūra, skirta patikrinti kodą, bus tokia:

test prop/Car.pytest.py

Failo pavadinimas: 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)

Failo pavadinimas: test.py

import Carclass_contents = dir(Car)print(class_contents)

Išvestyje pateikiamas klasės pavadinimas ir visos funkcijos, apibrėžtos Car.py.

Taip pat galite pabandyti naudoti „Dir“ („Python“) integruotame modulyje. Pabandykime tą patį „ Json“ modulyje, kaip parodyta toliau pateiktame pavyzdyje. Tai parodys visas „ Json“ modulyje galimas savybes ir metodus .

Import jsonjson_details = dir(json)print(json_details)

Išvestis:

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

Paketai

Paketas yra katalogas, kuriame visi moduliai apibrėžti. Jei norite, kad „Python“ vertėjas traktuotų jį kaip paketą, jūsų kataloge turėtų būti init.pyfile. „Init.py“ sukuria katalogą kaip paketą. Čia yra paketo, kurį ketiname dirbti, išdėstymas.

Pakuotės pavadinimas yra mano pakuotė . Norėdami pradėti dirbti su paketu, sukurkite katalogą paketas /. Katalogo viduje sukurkite tuščią failą, pavadintą __init__.py. Sukurkite dar 3 failus modul1.py, module2.py ir module3.py ir apibrėžkite funkcijas, kaip parodyta ekrano kopijoje. Čia pateikiama išsami informacija apie modulius1.py, module2.py ir 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")

Paketas s paruoštas naudojimui. Dabar paskambinkite į bet kurio failo paketą, kaip parodyta žemiau: test.py:

Čia importuojamas „mypackage.module1“ ir jam suteiktas slapyvardis kaip mod1. Panašiai galite naudoti kitus modulius modul2.py ir module3.py iš mano paketo.

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

Išvestis:

Welcome to Module1 function1NoneWelcome to Module1 function2NoneWelcome to Module1 function2None

Mes ką tik pademonstravome paketą su paprastu moduliu su jo viduje esančiomis funkcijomis. Pagal savo projektą taip pat galite supakuoti su paketais. Poaplankiai / moduliai su apibrėžtomis klasėmis.

„Python“ modulio paieškos kelias

Vykdant, kai python aptinka importo modulio pavadinimą , vertėjas bando surasti modulį. Jis ieško modulio integruotų modulių sąraše. Vėliau katalogai, apibrėžti sys.path viduje.

Apibendrinant, vertėjas atlieka šią paiešką, norėdamas surasti modulį:

  1. Dabartiniame kataloge.
  2. Vidiniame modulių sąraše
  3. Sys.path katalogų viduje

Išsamią informaciją apie sys.path galite gauti importuodami sys modulį ir atsispausdinę sys.path. Tai suteiks jums žemiau pateiktų katalogų sąrašą:

importsysprint(sys.path)

Išvestis:

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

Taip pat galite modifikuoti kelią ir išsaugoti katalogus pagal savo reikalavimus.

Modulio slapyvardžio naudojimas importuojant

Taip pat galite konvertuoti modulio pavadinimą į trumpesnę formą, suteikdami jam slapyvardžio pavadinimą. Pseudonimą galima padaryti naudojant raktinį žodį.

Sintaksė:

import filename as alias name

Aplanko struktūra, skirta patikrinti kodą, bus tokia:

Mod test/test.pydisplay.py

Toliau pateikiamas kodas test.py viduje

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

Dabar naudosite alternatyvųjį vardą test.py puslapyje display.py

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

Testo moduliui naudojamas slapyvardis yra t. Taigi funkciją ir kintamuosius iš test.py galima nurodyti naudojant pseudonimą t.

Išvestis:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Absoliutus ir santykinis importas į „Python“

Dabar žinote, kaip importuoti failą kaip modulį kito failo viduje. Pažiūrėkime, kaip tvarkyti aplankuose esančius failus. Aplankuose esančius failus galima importuoti naudojant absoliutų arba santykinį importą.

Apsvarstykite, ar turite savo projekto aplanko struktūrą, kaip parodyta žemiau:

Šakninis aplankas yra mano projektas /. Jame yra du pakatalogiai „package1“ ir „package2“.

Aplankas „package1“ turi du modulius: module1.py ir module2.py.

Aplankas package2 turi vieną klasę myclass.py, paketo subpkg su module3.py ir paskutinį module4.py.

  • Programoje module1.py yra funkcijacalledmyfunc1.
  • Programoje module2.py yra funkcijacalledmyfunc2.
  • Programoje module3.py yra funkcijacalledmyfunc3.
  • Programoje module4.py yra funkcijacalledmyfunc4.

Absoliutaus importo naudojimas

Jei norite importuoti absoliučiai, turite pridėti visą modulio kelią tiesiai iš projekto šakninio aplanko.

Pažiūrėkime, kaip pasinaudoti absoliučiu importu, kad būtų galima nurodyti kiekvieno modulio funkcijas.

Norėdami dirbti su funkcijamyfunc1, turėsite importuoti taip:

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

Norėdami dirbti su funkcija myfunc3, turėsite importuoti taip:

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

Absoliutaus importo naudojimo pranašumai ir trūkumai

Štai absoliutaus importo naudojimo pranašumai:

  • Tampa lengva atsekti modulius, kad būtų galima patikrinti kodą.
  • Lengva naudoti ir labai paprasta.
  • Jei projektas bus perkeltas kitu keliu, importas vis tiek išliks tas pats.

Absoliutaus importo naudojimo trūkumai

Čia yra absoliutaus importo naudojimo trūkumai:

Trūkumai:

  • Importavimo kelias gali užtrukti labai ilgai, moduliai yra įdėti ir jei modulių pavadinimas yra ilgas.

Santykinio importo naudojimas

Atsižvelgdami į tą pačią aplankų struktūrą, paminėtą žemiau, pamatysime, kaip importuoti tą patį naudojant santykinį importą.

Santykinio importo atveju importuojamas modulis yra lyginamas su dabartine vieta, kurioje yra importo ataskaita.

Sintaksė:

Santykinio importavimo metu prieš modulio pavadinimą turite pridėti punktą (.), Kai importuojate naudodami .

Liks 2 punktai (…) prieš modulio pavadinimą, jei modulis yra vienu lygiu aukštyn nuo dabartinės vietos.

Remdamiesi aukščiau minėtu aplankų struktūros paveikslu, turime šiuos modulius su jų funkcija, į kuriuos turime atkreipti dėmesį.

  • Programoje module1.py yra funkcijacalledmyfunc1.
  • Programoje module2.py yra funkcijacalledmyfunc2.
  • Programoje module3.py yra funkcijacalledmyfunc3.
  • Programoje module4.py yra funkcijacalledmyfunc4.

Norėdami dirbti su funkcijamyfunc1, turėsite importuoti taip:

from .module1 import myfunc1

Norėdami dirbti su funkcija myfunc3, turėsite importuoti taip:

from .subpkg.module3 import myfunc3

Santykinio importo privalumai

Privalumai:

  • Lengva dirbti su santykiniu importu.
  • Iš dabartinės vietos importą galima sutrumpinti, palyginti su absoliučiu importu.

Santykinio importo trūkumai

Trūkumai:

  • Naudojant santykinį importą, sunku atsekti kodą

Santrauka:

  • Importavimas naudojant „Python“ padeda jums nurodyti kodą, ty .funkcijas / objektus, parašytus kitame faile. Jis taip pat naudojamas importuoti „python“ bibliotekas / paketus, kurie yra įdiegti naudojant „pip“ („python“ paketų tvarkyklė), ir tada jūs turite juos naudoti savo kode.
  • Importavimo funkcijos pasiekiamos kitomis kalbomis, tokiomis kaip mašinraštis, „JavaScript“, „Java“, „ruby“ ir kt.
  • Modulis yra „python“ - tai kodas, įrašytas failo viduje, pavyzdžiui (test.py). Failo viduje galite apibrėžti savo kintamuosius, funkcijas ar klasę. Visas failas tampa moduliu ir gali būti importuojamas į kitą failą, nurodant kodą.
  • Naudodami modulio funkciją, galite suskaidyti kodą į skirtingus failus, užuot viską įrašę vieno failo viduje. Vėliau, naudodamiesi importavimu, galite nurodyti reikalingo failo kodą.
  • „Python“ turi savo įmontuotus modulius, taip pat išorinės bibliotekos / paketai, įdiegti naudojant „Python“ paketų tvarkytuvę (pip), pvz., „Pandas“, „NumPy“ ir kt., Vadinami moduliais.
  • Iš viso modulio galite importuoti tik nedidelę modulio dalį, ty tik reikalingas funkcijas ir kintamųjų pavadinimus, užuot importavę visą kodą.
  • Taip pat galite konvertuoti modulio pavadinimą į trumpesnę formą, suteikdami jam slapyvardžio pavadinimą. Pseudonimą galima padaryti naudojant raktinį žodį.
  • Paketas yra katalogas, kuriame visi moduliai apibrėžti. Norint, kad „Python“ vertėjas traktuotų jį kaip paketą, kataloge turėtų būti __init.pyfile. „Init.py“ sukuria katalogą kaip paketą. Čia yra paketo, kurį ketiname dirbti, išdėstymas.
  • Vykdant, kai python aptinka importo modulio pavadinimą , vertėjas bando surasti modulį. Jis ieško modulio integruotų modulių sąraše. Vėliau katalogai, apibrėžti sys.path viduje.
  • Jei norite importuoti absoliučiai, turite pridėti visą modulio kelią tiesiai iš projekto šakninio aplanko.
  • Santykinio importo atveju importuojamas modulis yra lyginamas su dabartine vieta, kurioje yra importo ataskaita.