Importă modul în Python cu Exemple
În ce sunt modulele Python?
Un modul este un fișier cu cod python. Codul poate fi sub formă de variabile, funcții sau clase definite. Numele fișierului devine numele modulului.
De exemplu, dacă numele fișierului dvs. este guru99.py, numele modulului va fi guru99. Cu funcționalitatea modulului, vă puteți împărți codul în fișiere diferite în loc să scrieți totul într-un singur fișier.
Care este Python import modul?
Un fișier este considerat un modul în python. Pentru a utiliza modulul, trebuie să îl importați folosind importul cuvânt cheie. Funcția sau variabilele prezente în fișier pot fi utilizate într-un alt fișier prin importul modulului. Această funcționalitate este disponibilă în alte limbi, cum ar fi dactilografiată, JavaScript, java, ruby etc.
Cum să creați și să importați un modul în Python?
Acum vom crea un modul și îl vom importa într-un alt fișier.
Iată fluxul de creare și importare a modulului, așa cum se arată în captură de ecran:
Urmați pașii dați pentru a crea un modul în python.
Structura folderului folosită pentru a testa codul este următoarea:
modtest/ test.py display.py
Pas 1) Creați un fișier și denumiți-l test.py
Pas 2) În interiorul test.py creați o funcție numită display_message()
Def display_message(): return "Welcome to Guru99 Tutorials!"
Pas 3) Acum creați un alt fișier display.py.
Pas 4) În interiorul display.py importați fișierul moduletest.py, după cum se arată mai jos:
import test
În timpul importului, nu trebuie să menționați test.py, ci doar numele fișierului.
Pas 5) Apoi puteți apela funcția display_message() din test.py în interiorul display.py, trebuie să utilizați module_name.function_name.
De exemplu test.display_message().
Import test print(test.display_message())
Pas 6) Când executați display.py, veți obține următoarele ieșire:
Welcome to Guru99 Tutorials!
Importul unei clase în Python
Mai devreme, am văzut un modul simplu cu o funcție. Aici va crea o clasă și va trimite clasa într-un alt fișier.
Structura folderului pentru a testa codul este următoarea:
myproj/ Car.py display.py
Creați un fișier numit Car.py cu următorul cod:
Nume fișier: 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)
În fișierul Car.py , există atribute brand_name, model și manu_year. Funcțiile definite în interiorul clasei sunt car_details(), get_Car_brand(), get_Car_model().
Să folosim acum fișierul Car.py ca modul într-un alt fișier numit display.py.
Nume fișier: 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())
ieșire:
BMW Car brand is BMW Car model is Z5 Car manufacture year is 2020 Car brand is BMW Car model is Z5
Deci putem accesa toate variabilele și funcțiile din Car.py folosind modulul Car.
Utilizarea de la pentru a importa modulul
Puteți importa doar o mică parte a modulului, adică numai funcțiile și numele variabilelor necesare din modul, în loc să importați codul complet.
Când doriți să fie importate numai anumite lucruri, puteți utiliza cuvântul cheie „de la” pentru a importa ceea ce doriți.
Deci sintaxa este
from module import your function_name , variables,... etc.
Structura folderului folosită pentru a testa codul este următoarea:
modtest/ test.py display.py
În test.py există 2 funcții așa cum se arată:
Nume fișier: test.py
defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Acum doriți funcția display_message(). Funcția sau variabila pe care o importați poate fi accesată direct după cum se arată mai jos:
Nume fișier: display.py
from test import display_message print(display_message())
ieșire:
Welcome to Guru99 Tutorials!
Acum, dacă se întâmplă să utilizați funcția display_message1(), va genera o eroare că funcția nu este definită așa cum se arată mai jos:
from test import display_message print(display_message1())
ieșire:
Traceback (most recent call last): File "display.py", line 3, in <module> print(display_message1()) Name Error: name 'display_message1' is not defined
Se importă totul din modul
Import vă permite să importați modulul complet utilizând import urmat de numele modulului, adică numele fișierului sau biblioteca care va fi utilizată.
Sintaxă:
Import module
Sau prin utilizarea
from module import *
Structura folderului folosită pentru a testa codul este următoarea:
modtest/ test.py display.py
Mai jos sunt detaliile codului din interiorul test.py
my_name = "Guru99" my_address = "Mumbai" defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Folosind modulul de import
Folosind doar numele modulului de import, pentru a se referi la variabilele și funcțiile din interiorul modulului, trebuie să prefixeze numele modulului.
Exemplu
Nume fișier: display.py
Import test print(test.display_message()) print(test.display_message1()) print(test.my_name) print(test.my_address)
Testul numelui modulului este folosit pentru a face referire la funcția și variabilele din interiorul testului modulului.
ieșire:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Folosind import *
Să vedem un exemplu de utilizare import *. Utilizarea import *, funcțiile și variabilele sunt direct accesibile, așa cum se arată în exemplul de mai jos:
from test import * print(display_message()) print(display_message1()) print(my_name) print(my_address)
ieșire:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Funcția dir( ).
Dir() este o funcție încorporată în python. Dir() returnează toate proprietățile și metodele, inclusiv proprietățile încorporate ale obiectului dat.
Deci, atunci când dir() este utilizat pe modul, vă va oferi variabilele, funcțiile care sunt prezente în interiorul modulului.
Iată un exemplu de lucru de dir() pe un modul. Avem o clasă numită Car.py, să importăm Car și să-i atribuim lui dir() pentru a vedea rezultatul.
Structura folderului pentru a testa codul va fi următoarea:
test prop/ Car.py test.py
Nume fișier: 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)
Nume fișier: test.py
import Car class_contents = dir(Car) print(class_contents)
Ieșirea ne oferă numele clasei și toate funcțiile definite în Car.py.
De asemenea, puteți încerca să utilizați dir() pe un modul încorporat disponibil în Python. Hai să încercăm la fel JSON modul așa cum se arată în exemplul de mai jos. Acesta va afișa toate proprietățile și metodele disponibile în JSON modul.
Import json json_details = dir(json) print(json_details)
ieșire:
['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']
Pachete
Un pachet este un director cu toate modulele definite în el. A face o Python interpretor tratează-l ca pe un pachet, directorul tău ar trebui să aibă fișierul init.py. Init.py face directorul ca un pachet. Iată aspectul pachetului la care vom lucra.
Numele pachetului este pachetul meu. Pentru a începe să lucrați cu pachetul, creați un director numit pachet/. În interiorul directorului, creați un fișier gol numit __init__.py. Creați încă 3 fișiere module1.py, module2.py și module3.py și definiți funcțiile așa cum se arată în captură de ecran. Iată detaliile module1.py, module2.py și 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")
pacheteste gata de utilizare. Acum apelați pachetul din orice fișier, așa cum se arată mai jos :test.py:
Aici, mypackage.module1 este importat și i se primește un nume de alias ca mod1. În mod similar, puteți utiliza alte module module2.py și module3.py din pachetul meu.
import mypackage.module1 as mod1 print(mod1.mod1_func1()) print(mod1.mod1_func2()) print(mod1.mod1_func2())
ieșire:
Welcome to Module1 function1 None Welcome to Module1 function2 None Welcome to Module1 function2 None
Tocmai am demonstrat pachetul cu un modul simplu cu funcții în interiorul acestuia. În conformitate cu proiectul dvs., puteți, de asemenea, să împachetați cu sub-pachete. Subdirectoare/ având module cu clase definite.
Python Calea de căutare a modulului
În timpul execuției, când apare python nume de modul de import, interpretul încearcă să localizeze modulul. Acesta caută modulul în lista de module încorporate. Later în total, directoarele definite în interiorul sys.path.
Pentru a rezuma, interpretul face următoarea căutare pentru a localiza modulul:
- În directorul dvs. curent.
- În lista de module încorporate
- În directoarele sys.path
Puteți obține detaliile sys.path importând modulul sys și imprimând sys.path. Vă va oferi lista de directoare așa cum se arată mai jos:
importsys print(sys.path)
ieșire:
['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\ \Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\P ython37\\DLLs']
De asemenea, puteți modifica calea și păstra directoarele conform cerințelor dvs.
Folosind alias de modul în import
De asemenea, puteți converti numele modulului într-o formă mai scurtă dându-i un nume de alias. Aliasul se poate face folosind cuvântul cheie.
Sintaxă:
import filename as alias name
Structura folderului pentru a testa codul va fi următoarea:
Mod test/ test.py display.py
Urmează codul din interiorul test.py
my_name = "Guru99" my_address = "Mumbai" def display_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Acum va folosi un alias pentru test.py în display.py
Import test as t print(t.display_message()) print(t.display_message1()) print(t.my_name) print(t.my_address)
Aliasul care este folosit pentru modulul de testare este t . Deci, funcția și variabilele din test.py pot fi referite folosind aliasul t.
ieșire:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Importurile absolute și relative în Python
Acum știți cum să importați un fișier ca modul în interiorul altui fișier. Să vedem acum cum să gestionăm fișierele disponibile în foldere. Fișierele din foldere pot fi importate fie utilizând importuri absolute, fie relative.
Luați în considerare că aveți structura folderului de proiect, așa cum se arată mai jos:
Dosarul rădăcină este proiectul meu/. Are două subfoldere pachet1 și pachet2.
Folderul pachet1 are două module, module1.py și module2.py.
Dosarul package2 are o clasă myclass.py, un sub-pachet subpkg cu module3.py și ultimul module4.py.
- În module1.py, există o funcție numitămyfunc1.
- În module2.py, există o funcție numitămyfunc2.
- În module3.py, există o funcție numitămyfunc3.
- În module4.py, există o funcție numitămyfunc4.
Utilizarea importurilor absolute
Pentru importurile Absolute, trebuie să adăugați întreaga cale a modulului direct din folderul rădăcină al proiectului.
Să vedem acum cum să folosim importurile absolute pentru a ne referi la funcțiile prezente în fiecare modul.
Pentru a lucra cu functionmyfunc1, va trebui să importați după cum urmează:
from package1.module1 import myfunc1 or from package1 import module1 module1.myfunc1()
Pentru a lucra cu funcția myfunc3, va trebui să importați după cum urmează:
from package1.subpkg.module3 import myfunc3 or from package1.subpkg import module3 module3.myfunc3()
Avantajele și dezavantajele utilizării importurilor absolute
Iată avantajele utilizării importurilor absolute:
- Devine ușor să urmăriți modulele pentru verificarea codului.
- Usor de folosit si foarte simplu.
- Dacă proiectul este mutat pe o cale diferită, importurile vor rămâne aceleași.
Dezavantajele utilizării importurilor absolute
Iată dezavantajele utilizării importurilor absolute:
Dezavantaje:
- Calea de import poate deveni foarte lungă în cazul în care modulele sunt imbricate și dacă numele modulelor este lung.
Utilizarea importurilor relative
Având în vedere aceeași structură de foldere menționată mai jos, vom vedea cum să le importăm folosind importuri relative.
În importul relativ, modulul de importat este relativ la locația curentă care este locația în care este prezentă instrucțiunea de import.
Sintaxă
În importurile relative, trebuie să adăugați un punct (.) înainte de numele modulului atunci când importați folosind din.
Vor fi 2 perioade (..) înainte de numele modulului dacă modulul se află la un nivel superior față de locația curentă.
Referindu-ne la figura structurii folderului menționată mai sus, avem următoarele module cu funcția lor, la care trebuie să ne referim.
- În module1.py, există o funcție numitămyfunc1.
- În module2.py, există o funcție numitămyfunc2.
- În module3.py, există o funcție numitămyfunc3.
- În module4.py, există o funcție numitămyfunc4.
Pentru a lucra cu functionmyfunc1, va trebui să importați după cum urmează:
from .module1 import myfunc1
Pentru a lucra cu funcția myfunc3, va trebui să importați după cum urmează:
from .subpkg.module3 import myfunc3
Avantajele importurilor relative
avantaje:
- Este ușor să lucrați cu importuri relative.
- Din locația actuală, importurile pot fi scurtate în comparație cu importurile absolute.
Dezavantajele importurilor relative
Dezavantaje:
- Folosind importurile relative, este dificil să urmăriți unde se află codul
Rezumat
- Import în Python vă ajută să vă referiți la cod, adică .funcții/obiecte care sunt scrise într-un alt fișier. Este, de asemenea, folosit pentru a importa biblioteci/pachete Python care sunt instalate folosind pip (manager de pachete Python) și apoi trebuie să le utilizați în cod.
- Funcționalitatea de import este disponibilă în alte limbi, cum ar fi dactilografiată, JavaScript, java, ruby etc.
- Un modul este python este codul scris în interiorul fișierului, de exemplu (test.py). În interiorul fișierului, puteți avea variabilele, funcțiile sau clasa dvs. definite. Întregul fișier devine un modul și poate fi importat în alt fișier pentru a se referi la cod.
- Cu funcționalitatea modulului, vă puteți împărți codul în fișiere diferite în loc să scrieți totul într-un singur fișier. Later, folosind import, vă puteți referi la codul din interiorul fișierului de care aveți nevoie.
- Python are modulele sale încorporate și, de asemenea, biblioteci/pachete externe instalate folosind un manager de pachete python (pip), de exemplu, panda, NumPy etc. sunt denumite module.
- Puteți importa doar o mică parte a modulului, adică numai funcțiile și numele variabilelor necesare din modul în loc să importați codul complet.
- De asemenea, puteți converti numele modulului într-o formă mai scurtă dându-i un nume de alias. Aliasul se poate face folosind cuvântul cheie.
- Un pachet este un director cu toate modulele definite în el. A face o Python interpretor tratează-l ca pe un pachet, directorul tău ar trebui să aibă fișierul __init.py. Init.py face directorul ca un pachet. Iată aspectul pachetului la care vom lucra.
- În timpul execuției, când apare python nume de modul de import, interpretul încearcă să localizeze modulul. Acesta caută modulul în lista de module încorporate. Later în total, directoarele definite în interiorul sys.path.
- Pentru importurile Absolute, trebuie să adăugați întreaga cale a modulului direct din folderul rădăcină al proiectului.
- În importul relativ, modulul de importat este relativ la locația curentă care este locația în care este prezentă instrucțiunea de import.