Importer modul i Python med eksempler

Innholdsfortegnelse:

Anonim

Hva er modulene i Python?

En modul er en fil med python-kode. Koden kan være i form av variabler, funksjoner eller klassedefinert. Filnavnet blir modulnavnet.

For eksempel, hvis filnavnet ditt er guru99.py, vil modulnavnet være guru99 . Med modulfunksjonalitet kan du dele koden din i forskjellige filer i stedet for å skrive alt i en fil.

I denne opplæringen lærer du:

  • Hva er modulene i Python?
  • Python-importmodul
  • Hvordan lage og importere en modul i Python?
  • Importerer en klasse i Python
  • Bruker fra for å importere modul
  • Importerer alt fra modulen
  • Bruker importmodulen
  • Bruker import *
  • Dir () -funksjonen
  • Pakker
  • PythonModuleSearchPath
  • Bruker modulalias i importen
  • Absolutt og relativ import i Python
  • Bruke AbsoluteImports
  • UsingRelativeImports

Hva er Python-importmodulen?

En fil betraktes som en modul i python. For å bruke modulen, må du importere den ved hjelp av importordet . Funksjonen eller variablene som er tilstede i filen, kan brukes i en annen fil ved å importere modulen. Denne funksjonaliteten er tilgjengelig på andre språk, som typescript, JavaScript, java, ruby, etc.

Hvordan lage og importere en modul i Python?

Nå skal vi lage en modul og importere den i en annen fil.

Her er strømmen for å opprette og importere modulen som vist på skjermbildet:

Følg trinnene som er gitt for å lage en modul i python.

Mappestrukturen som brukes til å teste koden er som følger:

modtest/test.pydisplay.py

Trinn 1) Opprett en fil og gi den navnet test.py

Trinn 2) Opprett test.py en funksjon kalt display_message ()

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

Trinn 3) Opprett nå en annen fil display.py.

Trinn 4) Importer moduletest.py-filen på innsiden av display.py, som vist nedenfor:

import test

Mens du importerer, trenger du ikke å nevne test.py, men bare navnet på filen.

Trinn 5)

Deretter kan du ringe funksjonen display_message () fra test.py inne i display.py, du må bruke module_name.function_name.

For eksempel test.display_message ().

Import testprint(test.display_message())

Trinn 6)

Når du kjører display.py, får du følgende utdata:

Welcome to Guru99 Tutorials!

Importerer en klasse i Python

Tidligere har vi sett en enkel modul med en funksjon. Her vil du opprette en klasse og henvise til en annen fil.

Mappestrukturen for å teste koden er som følger:

myproj/Car.pydisplay.py

Opprett en fil som heter Car.py med følgende kode:

Filnavn: 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)

I filen Car.py er det attributter brand_name, model og manu_year. Funksjonene som er definert i klassen er car_details (), get_Car_brand (), get_Car_model ().

La oss nå bruke filen Car.py som en modul i en annen fil som heter display.py.

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

Produksjon:

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

Så vi kan få tilgang til alle variablene og funksjonene fra Car.py ved hjelp av Car-modulen.

Bruker fra for å importere modul

Du kan bare importere en liten del av modulen, dvs. bare de nødvendige funksjonene og variabelnavnene fra modulen i stedet for å importere full kode.

Når du vil at bare spesifikke ting skal importeres, kan du bruke søkeordet "fra" for å importere det du ønsker.

Så syntaksen er

from module import your function_name , variables,… etc.

Mappestrukturen som brukes til å teste koden er som følger:

modtest/test.pydisplay.py

I test.py er det to funksjoner som vist:

Filnavn: test.py

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

Nå vil du ha display_message () -funksjonen. Funksjonen eller variabelen du importerer, kan nås direkte som vist nedenfor:

Filnavn: display.py

from test import display_messageprint(display_message())

Produksjon:

Welcome to Guru99 Tutorials!

Nå hvis du tilfeldigvis bruker funksjonen display_message1 (), vil det kaste en feil om at funksjonen ikke er definert som vist nedenfor:

from test import display_messageprint(display_message1())

Produksjon:

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

Importerer alt fra modulen

Import lar deg importere hele modulen ved å bruke import etterfulgt av modulnavnet, dvs. filnavnet eller biblioteket som skal brukes.

Syntaks:

Import module

Eller ved å bruke

from module import *

Mappestrukturen som brukes til å teste koden er som følger:

modtest/test.pydisplay.py

Følgende er kodedetaljene inne i test.py

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

Bruker importmodulen

Ved å bare importere modulnavnet, for å referere til variablene og funksjonene inne i modulen, må det stå foran modulnavnet.

Eksempel

Filnavn: display.py

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

Modulnavnetesten brukes til å referere til funksjonen og variablene i modultesten.

Produksjon:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Bruker import *

La oss se et eksempel med import * . Ved hjelp av import * er funksjonene og variablene direkte tilgjengelige, som vist i eksemplet nedenfor:

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

Produksjon:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Dir () -funksjonen

Dir () er en innebygd funksjon i python. Dir () returnerer alle egenskapene og metodene, inkludert det gitte objekts innebygde egenskaper.

Så når dir () brukes på modulen, vil det gi deg variablene, funksjonene som er tilstede i modulen.

Her er et fungerende eksempel på dir () på en modul. Vi har en klasse som heter Car.py, la oss importere Car og tilordne til dir () for å se utdataene.

Mappestrukturen for å teste koden vil være som følger:

test prop/Car.pytest.py

Filnavn: 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)

Filnavn: test.py

import Carclass_contents = dir(Car)print(class_contents)

Utgangen gir oss navnet på klassen og alle funksjonene som er definert i Car.py.

Du kan også prøve å bruke dir () på en innebygd modul som er tilgjengelig i Python. La oss prøve det samme på json- modulen som vist i eksemplet nedenfor. Den viser alle egenskapene og metodene som er tilgjengelige i json- modulen.

Import jsonjson_details = dir(json)print(json_details)

Produksjon:

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

Pakker

En pakke er en katalog med alle moduler definert i den. For å få en Python-tolk til å behandle den som en pakke, bør katalogen din ha init.pyfile. Init.py lager katalogen som en pakke. Her er utformingen av pakken som vi skal jobbe med.

Navnet på pakken er pakken min . For å begynne å jobbe med pakken, opprett en katalog som heter pakke /. Opprett en tom fil kalt __init__.py i katalogen. Opprett 3 flere filer module1.py, module2.py og module3.py og definer funksjonene som vist på skjermbildet. Her er detaljene i module1.py, module2.py og 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")

Den pakken er klar til bruk. Ring nå pakken i hvilken som helst av filen din som vist nedenfor: test.py:

Her importeres mypackage.module1 og får et aliasnavn som mod1. På samme måte kan du bruke andre moduler module2.py og module3.py fra pakken min.

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

Produksjon:

Welcome to Module1 function1NoneWelcome to Module1 function2NoneWelcome to Module1 function2None

Vi har nettopp demonstrert pakken med en enkel modul med funksjoner inni den. I henhold til prosjektet ditt, kan du også pakke med delpakker. Undermapper / ha moduler med klasser definert.

Python Module Search Path

Under utførelse, når python kommer over importmodulnavnet , prøver tolk å finne modulen. Den søker i modulen i den innebygde modullisten. Senere i det hele tatt definerte katalogene i sys.path.

For å oppsummere gjør tolken følgende søk for å finne modulen:

  1. I din nåværende katalog.
  2. I på listen over innebygde moduler
  3. Inne i sys.path-katalogene

Du kan få informasjon om sys.path ved å importere sys-modulen og skrive ut sys.path. Det vil gi deg listen over kataloger som vist nedenfor:

importsysprint(sys.path)

Produksjon:

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

Du kan også endre banen og beholde katalogene i henhold til dine behov.

Bruker modulalias i importen

Du kan også konvertere modulnavnet til en kortere form ved å gi det et aliasnavn. Aliaset kan gjøres ved hjelp av nøkkelordet.

Syntaks:

import filename as alias name

Mappestrukturen for å teste koden vil være som følger:

Mod test/test.pydisplay.py

Følgende er koden i test.py

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

Nå vil bruke et alias for test.py i display.py

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

Aliaset som brukes til testmodul er t. Så funksjonen og variablene fra test.py kan henvises ved hjelp av aliaset t.

Produksjon:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Absolutt og relativ import i Python

Du vet nå hvordan du importerer en fil som en modul i en annen fil. La oss nå se hvordan du administrerer filene som er tilgjengelige i mapper. Filene i mappene kan importeres enten ved å bruke absolutt eller relativ import.

Vurder at du har prosjektmappestrukturen din, som vist nedenfor:

Rotmappen er mitt prosjekt /. Den har to undermapper pakke1 og pakke2.

Mappepakken1 har to moduler, module1.py og module2.py.

Mappepakken2 har en klasse myclass.py, en underpakke subpkg med module3.py og siste module4.py.

  • I module1.py er det en funksjonskaltmyfunc1.
  • I module2.py er det en funksjonsanropmyfunc2.
  • I module3.py er det en funksjonsanropmyfunc3.
  • I module4.py er det en funksjonsanropmyfunc4.

Bruk av absolutt import

For absolutt import må du legge til hele banen til modulen din rett fra prosjektets rotmappe.

La oss nå se hvordan vi kan bruke absolutt import for å referere til funksjonene i hver av modulen.

For å jobbe med functionmyfunc1, må du importere som følger:

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

For å jobbe med funksjonen myfunc3 må du importere som følger:

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

Fordeler og ulemper ved å bruke absolutt import

Her er fordelene ved å bruke absolutt import:

  • Det blir enkelt å spore modulene for kodekontroll.
  • Enkel å bruke og veldig grei.
  • Hvis prosjektet flyttes til en annen vei, vil importen fortsatt være den samme.

Ulemper ved å bruke absolutt import

Her er ulempene ved å bruke absolutt import:

Ulemper:

  • Importstien kan bli veldig lang i tilfelle modulene er nestet, og hvis navnet på modulene er lang.

Bruke relativ import

Med tanke på den samme mappestrukturen som er nevnt nedenfor, vil vi se hvordan du importerer den samme ved hjelp av relativ import.

I relativ import er modulen som skal importeres i forhold til gjeldende plassering som er stedet der importerklæringen er til stede.

Syntaks:

I relative import, må du legge til et punktum (.) Før modulnavnet når du importerer hjelp fra .

Det vil gå to perioder (…) før modulnavnet hvis modulen er i ett nivå opp fra gjeldende plassering.

Med henvisning til mappestrukturen som er nevnt ovenfor, har vi følgende moduler med sin funksjon, som vi må referere til.

  • I module1.py er det en funksjonskaltmyfunc1.
  • I module2.py er det en funksjonsanropmyfunc2.
  • I module3.py er det en funksjonsanropmyfunc3.
  • I module4.py er det en funksjonsanropmyfunc4.

For å jobbe med functionmyfunc1 må du importere som følger:

from .module1 import myfunc1

For å jobbe med funksjonen myfunc3, må du importere som følger:

from .subpkg.module3 import myfunc3

Fordeler med relativ import

Fordeler:

  • Det er enkelt å jobbe med relativ import.
  • Fra dagens plassering kan importen forkortes i forhold til absolutt import.

Ulemper ved relativ import

Ulemper:

  • Ved å bruke relativ import er det vanskelig å spore tilbake hvor koden ligger

Sammendrag:

  • Import i Python hjelper deg med å referere til koden, dvs. funksjoner / objekter som er skrevet i en annen fil. Den brukes også til å importere python-biblioteker / pakker som er installert ved hjelp av pip (python-pakkebehandling), og du må da bruke i koden din.
  • Importfunksjonalitet er tilgjengelig på andre språk som typescript, JavaScript, java, ruby, etc.
  • En modul er python er koden skrevet i filen, for eksempel (test.py). Inne i filen kan du definere variablene, funksjonene eller klassen din. Hele filen blir en modul og kan importeres i en annen fil for å referere til koden.
  • Med modulfunksjonalitet kan du dele koden din i forskjellige filer i stedet for å skrive alt i en fil. Senere, ved hjelp av import, kan du referere til koden i filen du trenger.
  • Python har sine innebygde moduler, og også eksterne biblioteker / pakker installert ved hjelp av en python-pakkehåndterer (pip), for eksempel pandaer, NumPy, etc. blir referert til som moduler.
  • Du kan bare importere en liten del av modulen, dvs. bare de nødvendige funksjonene og variabelnavnene fra modulen i stedet for å importere full kode.
  • Du kan også konvertere modulnavnet til en kortere form ved å gi det et aliasnavn. Aliaset kan gjøres ved hjelp av nøkkelordet.
  • En pakke er en katalog med alle moduler definert i den. For å få en Python-tolk til å behandle den som en pakke, bør katalogen din ha __init.pyfile. Init.py lager katalogen som en pakke. Her er utformingen av pakken som vi skal jobbe med.
  • Under utførelse, når python kommer over importmodulnavnet , prøver tolk å finne modulen. Den søker i modulen i den innebygde modullisten. Senere i det hele tatt definerte katalogene i sys.path.
  • For absolutt import må du legge til hele banen til modulen din rett fra prosjektets rotmappe.
  • I relativ import er modulen som skal importeres i forhold til gjeldende plassering som er stedet der importerklæringen er til stede.