Hvad er modulerne i Python?
Et modul er en fil med python-kode. Koden kan være i form af variabler, funktioner eller klasse defineret. Filnavnet bliver modulnavnet.
For eksempel, hvis dit filnavn er guru99.py, vil modulnavnet være guru99 . Med modulfunktionalitet kan du opdele din kode i forskellige filer i stedet for at skrive alt inde i en fil.
I denne vejledning lærer du:
- Hvad er modulerne i Python?
- Python-importmodul
- Hvordan oprettes og importeres et modul i Python?
- Import af en klasse i Python
- Brug fra til at importere modul
- Importerer alt fra modulet
- Brug af importmodulet
- Brug af import *
- Dir () -funktionen
- Pakker
- PythonModuleSearchPath
- Brug af modulalias i importen
- Absolut og relativ import i Python
- Brug af AbsoluteImports
- Brug af RelativeImports
Hvad er Python-importmodulet?
En fil betragtes som et modul i python. Hvis du vil bruge modulet, skal du importere det ved hjælp af importordet . Funktionen eller variablerne, der findes i filen, kan bruges i en anden fil ved at importere modulet. Denne funktionalitet er tilgængelig på andre sprog, som typescript, JavaScript, java, ruby osv.
Hvordan oprettes og importeres et modul i Python?
Nu opretter vi et modul og importerer det i en anden fil.
Her er strømmen til at oprette og importere modulet som vist på skærmbilledet:
Følg trinene for at oprette et modul i python.
Mappestrukturen, der bruges til at teste koden, er som følger:
modtest/test.pydisplay.py
Trin 1) Opret en fil, og navngiv den test.py
Trin 2) Opret test.py en funktion kaldet display_message ()
Def display_message():return "Welcome to Guru99 Tutorials!"
Trin 3) Opret nu en anden fil display.py.
Trin 4) Inde i display.py importerer du moduletest.py-filen som vist nedenfor:
import test
Under importen behøver du ikke nævne test.py, men kun navnet på filen.
Trin 5)
Derefter kan du ringe til funktionen display_message () fra test.py inde i display.py, du skal bruge modul_navn.funktionsnavn.
For eksempel test.display_message ().
Import testprint(test.display_message())
Trin 6)
Når du udfører display.py, får du følgende output:
Welcome to Guru99 Tutorials!
Import af en klasse i Python
Tidligere har vi set et simpelt modul med en funktion. Her oprettes en klasse og henviser klassen i en anden fil.
Mappestrukturen til at teste koden er som følger:
myproj/Car.pydisplay.py
Opret en fil kaldet 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 der attributter brand_name, model og manu_year. Funktionerne defineret inde i klassen er car_details (), get_Car_brand (), get_Car_model ().
Lad os nu bruge filen Car.py som et modul i en anden fil kaldet 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())
Produktion:
BMWCar brand is BMWCar model is Z5Car manufacture year is 2020Car brand is BMWCar model is Z5
Så vi kan få adgang til alle variabler og funktioner fra Car.py ved hjælp af Car-modulet.
Brug fra til at importere modul
Du kan kun importere en lille del af modulet, dvs. kun de nødvendige funktioner og variabelnavne fra modulet i stedet for at importere fuld kode.
Når du kun ønsker at importere bestemte ting, kan du bruge nøgleordet "fra" til at importere det, du ønsker.
Så syntaksen er
from module import your function_name , variables,… etc.
Mappestrukturen, der bruges til at teste koden, er som følger:
modtest/test.pydisplay.py
I test.py er der 2 funktioner som vist:
Filnavn: test.py
defdisplay_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"
Nu vil du have display_message () -funktionen. Den funktion eller variabel, du importerer, kan fås direkte som vist nedenfor:
Filnavn: display.py
from test import display_messageprint(display_message())
Produktion:
Welcome to Guru99 Tutorials!
Nu hvis du tilfældigvis bruger funktionen display_message1 (), vil det kaste en fejl, at funktionen ikke er defineret som vist nedenfor:
from test import display_messageprint(display_message1())
Produktion:
Traceback (most recent call last):File "display.py", line 3, inprint(display_message1())Name Error: name 'display_message1' is not defined
Importerer alt fra modulet
Import giver dig mulighed for at importere hele modulet ved hjælp af import efterfulgt af modulnavn, dvs. filnavnet eller det bibliotek, der skal bruges.
Syntaks:
Import module
Eller ved hjælp af
from module import *
Mappestrukturen, der bruges til at teste koden, er som følger:
modtest/test.pydisplay.py
Følgende er kodedetaljerne inde i test.py
my_name = "Guru99"my_address = "Mumbai"defdisplay_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"
Brug af importmodulet
Ved kun at importere modulnavn for at henvise til variabler og funktioner inde i modulet skal det præfikse modulnavnet.
Eksempel
Filnavn: display.py
Import testprint(test.display_message())print(test.display_message1())print(test.my_name)print(test.my_address)
Modulnavnetesten bruges til at henvise til funktion og variabler inde i modultest.
Produktion:
Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai
Brug af import *
Lad os se et eksempel ved hjælp af import * . Ved hjælp af import * er funktionerne og variablerne direkte tilgængelige, som vist i eksemplet nedenfor:
from test import *print(display_message())print(display_message1())print(my_name)print(my_address)
Produktion:
Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai
Dir () -funktionen
Dir () er en indbygget funktion i python. Dir () returnerer alle egenskaber og metoder, inklusive det givne objekts indbyggede egenskaber.
Så når dir () bruges på modulet, vil det give dig de variabler, funktioner, der findes i modulet.
Her er et fungerende eksempel på dir () på et modul. Vi har en klasse kaldet Car.py, lad os importere Car og tildele dir () for at se output.
Mappestrukturen til at 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)
Outputtet giver os navnet på klassen og alle de funktioner, der er defineret i Car.py.
Du kan også prøve at bruge dir () på et indbygget modul, der er tilgængeligt i Python. Lad os prøve det samme på json- modulet som vist i eksemplet nedenfor. Det viser alle de tilgængelige egenskaber og metoder i json- modulet.
Import jsonjson_details = dir(json)print(json_details)
Produktion:
['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 mappe med alle moduler defineret i den. For at få en Python-tolk til at behandle den som en pakke, skal din mappe have init.pyfile. Init.py opretter biblioteket som en pakke. Her er layoutet på pakken, som vi skal arbejde på.
Navnet på pakken er min pakke . For at begynde at arbejde med pakken skal du oprette en mappe kaldet pakke /. Opret en tom fil, der hedder __init__.py, inde i biblioteket. Opret 3 flere filer module1.py, module2.py og module3.py og definer funktionerne som vist på skærmbilledet. Her er detaljerne 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 pakke s klar til brug. Ring nu til pakken inde i en hvilken som helst af din fil som vist nedenfor: test.py:
Her importeres mypackage.module1 og får et aliasnavn som mod1. På samme måde kan du bruge andre moduler module2.py og module3.py fra min pakke.
import mypackage.module1 as mod1print(mod1.mod1_func1())print(mod1.mod1_func2())print(mod1.mod1_func2())
Produktion:
Welcome to Module1 function1NoneWelcome to Module1 function2NoneWelcome to Module1 function2None
Vi har netop demonstreret pakken med et simpelt modul med funktioner inde i det. I henhold til dit projekt kan du også pakke med have underpakker. Undermapper / med moduler med definerede klasser.
Python-modul søgesti
Når python støder på importmodulnavn under udførelse, forsøger tolken at finde modulet. Det søger i modulet i listen over indbyggede moduler. Senere i alt definerede mapperne inde i sys.path.
For at opsummere gør tolken følgende søgning for at finde modulet:
- I dit nuværende bibliotek.
- I på listen over indbyggede moduler
- Inde i sys.path-mapperne
Du kan få detaljerne om sys.path ved at importere sys-modulet og udskrive sys.path. Det giver dig listen over mapper som vist nedenfor:
importsysprint(sys.path)
Produktion:
['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\DLLs']
Du kan også ændre stien og holde mapperne i henhold til dine krav.
Brug af modulalias i importen
Du kan også konvertere modulnavnet til en kortere form ved at give det et aliasnavn. Aliaset kan gøres ved hjælp af nøgleordet.
Syntaks:
import filename as alias name
Mappestrukturen til at teste koden vil være som følger:
Mod test/test.pydisplay.py
Følgende er koden inde i test.py
my_name = "Guru99"my_address = "Mumbai"def display_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"
Brug nu et alias til 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, der bruges til testmodul, er t. Så funktionen og variablerne fra test.py kan henvises ved hjælp af aliaset t.
Produktion:
Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai
Absolut og relativ import i Python
Du ved nu, hvordan du importerer en fil som et modul i en anden fil. Lad os nu se, hvordan vi styrer de tilgængelige filer i mapper. Filerne i mapperne kan importeres enten ved hjælp af absolut eller relativ import.
Overvej, at du har din projektmappestruktur, som vist nedenfor:
Rodmappen er mit projekt /. 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 den sidste module4.py.
- I module1.py er der en funktion kaldetmyfunc1.
- I module2.py er der en funktionsopkaldtmyfunc2.
- I module3.py er der en funktionsopkaldtmyfunc3.
- I module4.py er der en funktionskaldtmyfunc4.
Brug af absolut import
For absolut import skal du tilføje hele stien til dit modul lige fra projektets rodmappe.
Lad os nu se, hvordan man bruger absolut import til at henvise til de funktioner, der findes i hvert modul.
For at arbejde med functionmyfunc1 skal du importere som følger:
from package1.module1 import myfunc1orfrom package1 import module1module1.myfunc1()
For at arbejde med funktionen myfunc3 skal du importere som følger:
from package1.subpkg.module3 import myfunc3orfrom package1.subpkg import module3module3.myfunc3()
Fordele og ulemper ved at bruge absolut import
Her er fordelene ved at bruge absolut import:
- Det bliver let at spore modulerne til kodekontrol.
- Let at bruge og meget ligetil.
- Hvis projektet flyttes til en anden sti, forbliver importen stadig den samme.
Ulemper ved at bruge absolut import
Her er ulemper ved at bruge absolut import:
Ulemper:
- Importstien kan blive meget lang i tilfælde, modulerne er indlejrede, og hvis navnet på modulerne er lang.
Brug af relativ import
I betragtning af den samme mappestruktur, der er nævnt nedenfor, vil vi se, hvordan man importerer den samme ved hjælp af relativ import.
Ved relativ import er det modul, der skal importeres, i forhold til den aktuelle placering, der er det sted, hvor importerklæringen er til stede.
Syntaks:
Ved relativ import skal du tilføje en periode (.) Før modulnavnet, når du importerer ved hjælp af fra .
Det vil være to perioder (...) før modulnavnet, hvis modulet er i et niveau op fra den aktuelle placering.
Med henvisning til den ovennævnte mappestruktur, har vi følgende moduler med deres funktion, som vi skal henvise til.
- I module1.py er der en funktion kaldetmyfunc1.
- I module2.py er der en funktionsopkaldtmyfunc2.
- I module3.py er der en funktionsopkaldtmyfunc3.
- I module4.py er der en funktionskaldtmyfunc4.
For at arbejde med functionmyfunc1 skal du importere som følger:
from .module1 import myfunc1
For at arbejde med funktionen myfunc3 skal du importere som følger:
from .subpkg.module3 import myfunc3
Fordele ved relativ import
Fordele:
- Det er let at arbejde med relativ import.
- Fra den nuværende placering kan importen afkortes i sammenligning med absolut import.
Ulemper ved relativ import
Ulemper:
- Ved hjælp af relativ import er det vanskeligt at spore tilbage, hvor koden findes
Resumé:
- Import i Python hjælper dig med at henvise til koden, dvs. funktioner / objekter, der er skrevet i en anden fil. Det bruges også til at importere pythonbiblioteker / pakker, der er installeret ved hjælp af pip (python-pakkehåndtering), og du skal derefter bruge i din kode.
- Importfunktionalitet er tilgængelig på andre sprog som typescript, JavaScript, java, ruby osv.
- Et modul er python er den kode, der er skrevet inde i filen, for eksempel (test.py). Inde i din fil kan du definere dine variabler, funktioner eller din klasse. Hele filen bliver et modul og kan importeres inde i en anden fil for at henvise til koden.
- Med modulfunktionalitet kan du opdele din kode i forskellige filer i stedet for at skrive alt inde i en fil. Senere ved hjælp af import kan du henvise til koden inde i den fil, du har brug for.
- Python har sine indbyggede moduler, og også eksterne biblioteker / pakker installeret ved hjælp af en python-pakkehåndtering (pip), fx pandaer, NumPy osv. Kaldes moduler.
- Du kan kun importere en lille del af modulet, dvs. kun de nødvendige funktioner og variabelnavne fra modulet i stedet for at importere fuld kode.
- Du kan også konvertere modulnavnet til en kortere form ved at give det et aliasnavn. Aliaset kan gøres ved hjælp af nøgleordet.
- En pakke er en mappe med alle moduler defineret i den. For at få en Python-tolk til at behandle den som en pakke, skal din mappe have __init.pyfile. Init.py opretter biblioteket som en pakke. Her er layoutet på pakken, som vi skal arbejde på.
- Når python støder på importmodulnavn under udførelse, forsøger tolken at finde modulet. Det søger i modulet i listen over indbyggede moduler. Senere i alt definerede mapperne inde i sys.path.
- For absolut import skal du tilføje hele stien til dit modul lige fra projektets rodmappe.
- Ved relativ import er det modul, der skal importeres, i forhold til den aktuelle placering, der er det sted, hvor importerklæringen er til stede.