Importer modul inn Python med eksempler

Hva er modulene i Python?

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

For eksempel, hvis filnavnet ditt er guru99.py, vil modulnavnet vรฆre guru99. Med modulfunksjonalitet kan du bryte koden din i forskjellige filer i stedet for รฅ skrive alt i รฉn fil.

Hva er den Python importere modul?

En fil betraktes som en modul i python. For รฅ bruke modulen, mรฅ du importere den ved hjelp av importen nรธkkelord. Funksjonen eller variablene som finnes 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 opprette og importere en modul i Python?

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

Her er flyten for รฅ opprette og importere modulen som vist pรฅ skjermbildet:

Opprett og importer en modul i Python

Fรธlg trinnene gitt for รฅ lage en modul i python.

Mappestrukturen som brukes til รฅ teste koden er som fรธlger:

modtest/
	test.py
	display.py	

Trinn 1) Opprett en fil og navngi den test.py

Trinn 2) Lag en funksjon som heter display_message() inne i test.py

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

Trinn 3) Opprett nรฅ en annen fil display.py.

Trinn 4) Inside display.py importerer moduletest.py-filen, som vist nedenfor:

import test

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

Trinn 5) Deretter kan du kalle funksjonen display_message() fra test.py inne i display.py, du mรฅ bruke module_name.function_name.

For eksempel test.display_message().

Import test
print(test.display_message())

Trinn 6) Nรฅr du kjรธrer display.py, fรฅr du fรธlgende Utgang:

Welcome to Guru99 Tutorials!

Importere en klasse i Python

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

Mappestrukturen for รฅ teste koden er som fรธlger:

myproj/
	Car.py
	display.py

Lag en fil kalt 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_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) 

I filen Car.py er det attributter merkenavn, modell og manu_รฅr. Funksjonene som er definert inne 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 kalt display.py.

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

Utgang:

BMW
Car brand is  BMW
Car model is  Z5
Car manufacture year is  2020
Car brand is  BMW
Car model is  Z5

Sรฅ vi kan fรฅ tilgang til alle variablene og funksjonene fra Car.py ved รฅ bruke bilmodulen.

Bruker fra til importmodul

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 "fra" nรธkkelord 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.py
	display.py	

I test.py er det 2 funksjoner som vist:

Filnavn: test.py

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

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

Filnavn: display.py

from test import display_message
print(display_message())

Utgang:

Welcome to Guru99 Tutorials!

Nรฅ hvis du tilfeldigvis bruker funksjonen display_message1(), vil det gi en feilmelding om at funksjonen ikke er definert som vist nedenfor:

from test import display_message
print(display_message1())

Utgang:

Traceback (most recent call last):
File "display.py", line 3, in <module>
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 modulnavn, 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.py
	display.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!"

Bruke importmodulen

Ved รฅ bare bruke importer modulnavn, for รฅ referere til variablene og funksjonene inne i modulen, mรฅ den prefikses med modulnavn.

Eksempel

Filnavn: display.py

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

Modulnavntesten brukes til รฅ referere til funksjonen og variablene inne i modultesten.

Utgang:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Bruker import *

La oss se et eksempel ved รฅ bruke 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)

Utgang:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

funksjonen dir( ).

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

Sรฅ nรฅr dir() brukes pรฅ modulen, vil den gi deg variablene, funksjoner som finnes inne i modulen.

Her er et fungerende eksempel pรฅ dir() pรฅ en modul. Vi har en klasse kalt 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.py
	test.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_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) 

Filnavn: test.py

import Car

class_contents = dir(Car)
print(class_contents)

Utdataene 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 tilgjengelig i Python. La oss prรธve det samme JSON modul som vist i eksempelet nedenfor. Den vil vise alle egenskapene og metodene som er tilgjengelige i JSON modul.

Import json
json_details = dir(json)
print(json_details)

Utgang:

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

Nettsidepakker

En pakke er en katalog med alle moduler definert i den. ร… lage en Python tolk behandle den som en pakke, mรฅ katalogen din ha init.pyfile. Init.py lager katalogen som en pakke. Her er utformingen av pakken som vi skal jobbe med.

Pakker inn Python

Navnet pรฅ pakken er pakken min. For รฅ begynne รฅ jobbe med pakken, lag en katalog kalt package/. Inne i katalogen oppretter du en tom fil kalt __init__.py. Lag ytterligere 3 filer module1.py, module2.py og module3.py og definer funksjonene som vist pรฅ skjermbildet. Her er detaljene for modul1.py, modul2.py og modul3.py

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

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

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

Ocuco pakkeer klar til bruk. Ring nรฅ pakken i hvilken som helst fil som vist nedenfor :test.py:

Her blir mypackage.module1 importert og gitt 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 mod1

print(mod1.mod1_func1())
print(mod1.mod1_func2())
print(mod1.mod1_func2())

Utgang:

Welcome to Module1 function1
None
Welcome to Module1 function2
None
Welcome to Module1 function2
None

Vi har nettopp demonstrert pakken med en enkel modul med funksjoner inni den. I henhold til prosjektet ditt kan du ogsรฅ pakke med underpakker. Undermapper/ med moduler med klasser definert.

Python Modulsรธkesti

Under utfรธrelse, nรฅr python kommer over importer modulnavn, prรธver tolken รฅ finne modulen. Den sรธker etter modulen i listen over innebygde moduler. Later i alt katalogene definert inne i sys.path.

For รฅ oppsummere, gjรธr tolken fรธlgende sรธk for รฅ finne modulen:

  1. I din nรฅvรฆrende katalog.
  2. Inn i listen over innebygde moduler
  3. Inne i sys.path-katalogene

Du kan fรฅ detaljene til sys.path ved รฅ importere sys-modulen og skrive ut sys.path. Det vil gi deg listen over kataloger som vist nedenfor:

importsys
print(sys.path)

Utgang:

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

Du kan ogsรฅ endre banen og beholde katalogene i henhold til dine krav.

Bruker modulalias i importen

Du kan ogsรฅ konvertere modulnavnet til en kortere form ved รฅ gi det et aliasnavn. Aliaset kan gjรธres ved รฅ bruke nรธkkelordet.

Syntaks:

import filename as alias name

Mappestrukturen for รฅ teste koden vil vรฆre som fรธlger:

Mod test/
	test.py
	display.py	

Fรธlgende er koden inne 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 t

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

Aliaset som brukes for testmodulen er t . Sรฅ funksjonen og variablene fra test.py kan refereres ved รฅ bruke aliaset t.

Utgang:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

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.

Tenk pรฅ at du har din prosjektmappestruktur, som vist nedenfor:

Absolutt og relativ import i Python

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

Mappen pakke1 har to moduler, modul1.py og modul2.py.

Mappen pakke2 har รฉn klasse myclass.py, en underpakke subpkg med module3.py, og siste modul4.py.

  • I module1.py er det en funksjon som hetermyfunc1.
  • I module2.py er det en funksjon som heter myfunc2.
  • I module3.py er det en funksjon kalt myfunc3.
  • I module4.py er det en funksjon som heter myfunc4.

Bruk av absolutt import

For absolutt import mรฅ du legge til hele banen til modulen din rett fra prosjektets rotmapp.

La oss nรฅ se hvordan du kan bruke absolutt import for รฅ referere til funksjonene som finnes i hver av modulene.

For รฅ jobbe med functionmyfunc1, mรฅ du importere som fรธlger:

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

For รฅ jobbe med funksjonen myfunc3 mรฅ du importere som fรธlger:

from package1.subpkg.module3  import  myfunc3
or
from package1.subpkg import module3
module3.myfunc3()  

Fordeler og ulemper ved รฅ bruke absolutt import

Her er fordelene ved รฅ bruke absolutt import:

  • Det blir enkelt รฅ spore tilbake modulene for kodesjekk.
  • Enkel รฅ bruke og veldig grei.
  • Hvis prosjektet flyttes til en annen bane, vil importen fortsatt vรฆre den samme.

Ulemper ved รฅ bruke absolutt import

Her er ulempene ved รฅ bruke absolutt import:

Ulemper:

  • Importbanen kan bli veldig lang i tilfelle, modulene er nestet, og hvis navnet pรฅ modulene er langt.

Bruke relativ import

Med tanke pรฅ den samme mappestrukturen som er nevnt nedenfor, vil vi se hvordan du importerer den samme ved รฅ bruke relativ import.

Ved relativ import er modulen som skal importeres relativt til gjeldende plassering som er plasseringen der importsetningen er til stede.

syntax

Ved relativ import mรฅ du legge til et punktum (.) fรธr modulnavnet nรฅr du importerer med fra.

Det vil gรฅ 2 perioder (..) fรธr modulnavnet hvis modulen er pรฅ ett nivรฅ opp fra gjeldende plassering.

Med henvisning til mappestrukturfiguren nevnt ovenfor, har vi fรธlgende moduler med deres funksjon, som vi mรฅ referere til.

  • I module1.py er det en funksjon som hetermyfunc1.
  • I module2.py er det en funksjon som heter myfunc2.
  • I module3.py er det en funksjon kalt myfunc3.
  • I module4.py er det en funksjon som heter myfunc4.

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 nรฅvรฆrende sted 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

  • Importer inn 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รฅ deretter bruke i koden din.
  • Importfunksjonalitet er tilgjengelig pรฅ andre sprรฅk som typescript, JavaScript, java, ruby, etc.
  • En modul er python er koden skrevet inne i filen, for eksempel (test.py). Inne i filen din kan du ha variablene, funksjonene eller klassen definert. Hele filen blir en modul og kan importeres inn i en annen fil for รฅ referere til koden.
  • Med modulfunksjonalitet kan du bryte koden din i forskjellige filer i stedet for รฅ skrive alt i รฉn fil. Later, ved รฅ bruke 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-pakkebehandler (pip), f.eks. pandaer, NumPy, etc. refereres 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 รฅ bruke nรธkkelordet.
  • En pakke er en katalog med alle moduler definert i den. ร… lage en Python tolk behandle den som en pakke, mรฅ 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 importer modulnavn, prรธver tolken รฅ finne modulen. Den sรธker etter modulen i listen over innebygde moduler. Later i alt katalogene definert inne i sys.path.
  • For absolutt import mรฅ du legge til hele banen til modulen din rett fra prosjektets rotmapp.
  • Ved relativ import er modulen som skal importeres relativt til gjeldende plassering som er plasseringen der importsetningen er til stede.

Oppsummer dette innlegget med: