Care sunt modulele din 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 fișier.
În acest tutorial, veți învăța:
- Care sunt modulele din Python?
- Modul de importare Python
- Cum se creează și se importă un modul în Python?
- Importul unei clase în Python
- Folosind modulul de la import pentru a importa
- Importând totul din modul
- Folosind modulul de import
- Utilizarea importului *
- Funcția dir ()
- Pachete
- PythonModuleSearchPath
- Utilizarea aliasului modulului în import
- Importuri absolute și relative în Python
- Utilizarea Importurilor Absolute
- Utilizarea importurilor relative
Ce este modulul de import Python?
Un fișier este considerat ca un modul în python. Pentru a utiliza modulul, trebuie să îl importați folosind cuvântul cheie de import . Funcția sau variabilele prezente în interiorul fișierului pot fi utilizate într-un alt fișier importând modulul. Această funcționalitate este disponibilă în alte limbi, cum ar fi dactilografiat, JavaScript, java, rubin etc.
Cum se creează și se importă un modul în Python?
Acum vom crea un modul și îl vom importa într-un alt fișier.
Iată fluxul pentru a crea și importa modulul așa cum se arată în captura de ecran:
Urmați pașii dați pentru a crea un modul în python.
Structura de dosare utilizată pentru a testa codul este următoarea:
modtest/test.pydisplay.py
Pasul 1) Creați un fișier și denumiți-l test.py
Pasul 2) În test.py creați o funcție numită display_message ()
Def display_message():return "Welcome to Guru99 Tutorials!"
Pasul 3) Acum creați un alt fișier display.py.
Pasul 4) În interiorul display.py importați fișierul moduletest.py, așa cum se arată mai jos:
import test
În timp ce importați, nu trebuie să menționați test.py, ci doar numele fișierului.
Pasul 5)
Apoi puteți apela funcția display_message () din test.py din display.py, trebuie să utilizați modul_name.function_name.
De exemplu test.display_message ().
Import testprint(test.display_message())
Pasul 6)
Când executați display.py, veți obține următoarea ieșire:
Welcome to Guru99 Tutorials!
Importul unei clase în Python
Anterior, am văzut un modul simplu cu o funcție. Aici va crea o clasă și se va referi la clasa din alt fișier.
Structura de dosare pentru testarea codului este următoarea:
myproj/Car.pydisplay.py
Creați un fișier numit Car.py cu următorul cod:
Numele fișierului: 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)
În fișierul Car.py, există atribute brand_name, model și manu_year. Funcțiile definite în cadrul clasei sunt car_details (), get_Car_brand (), get_Car_model ().
Să folosim acum fișierul Car.py ca un modul într-un alt fișier numit display.py.
Numele fișierului: 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())
Ieșire:
BMWCar brand is BMWCar model is Z5Car manufacture year is 2020Car brand is BMWCar model is Z5
Deci, putem accesa toate variabilele și funcțiile din Car.py utilizând modulul Car.
Folosind modulul de la import pentru a importa
Puteți importa doar o mică parte a modulului, adică numai funcțiile necesare și numele variabilelor 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 de dosare utilizată pentru a testa codul este următoarea:
modtest/test.pydisplay.py
În test.py există 2 funcții așa cum se arată:
Numele fișierului: 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 așa cum se arată mai jos:
Nume fișier: display.py
from test import display_messageprint(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_messageprint(display_message1())
Ieșire:
Traceback (most recent call last):File "display.py", line 3, inprint(display_message1())Name Error: name 'display_message1' is not defined
Importând totul din modul
Importul vă permite să importați modulul complet utilizând importul urmat de numele modulului, adică numele fișierului sau biblioteca care urmează să fie utilizată.
Sintaxă:
Import module
Sau folosind
from module import *
Structura de dosare utilizată pentru a testa codul este următoarea:
modtest/test.pydisplay.py
Următoarele sunt detaliile codului din 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 importul numelui modulului, pentru a se referi la variabilele și funcțiile din interiorul modulului, acesta trebuie să fie prefixat cu numele modulului.
Exemplu
Numele fișierului: display.py
Import testprint(test.display_message())print(test.display_message1())print(test.my_name)print(test.my_address)
Testul numelui modulului este utilizat pentru a se referi la funcția și variabilele din testul modulului.
Ieșire:
Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai
Utilizarea importului *
Să vedem un exemplu folosind import * . Folosind 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!Guru99Mumbai
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, acesta vă va oferi variabilele, funcțiile care sunt prezente în interiorul modulului.
Iată un exemplu de lucru pentru dir () pe un modul. Avem o clasă numită Car.py, permiteți-ne să importăm Car și să atribuim dir () pentru a vedea rezultatul.
Structura de dosare pentru testarea codului va fi după cum urmează:
test prop/Car.pytest.py
Numele fișierului: 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)
Numele fișierului: test.py
import Carclass_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. Să încercăm același lucru pe modulul json ca în exemplul de mai jos. Va afișa toate proprietățile și metodele disponibile în modulul json .
Import jsonjson_details = dir(json)print(json_details)
Ieșire:
['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']
Pachete
Un pachet este un director cu toate modulele definite în interiorul său. Pentru ca un interpret Python să-l trateze ca pe un pachet, directorul dvs. ar trebui să aibă init.pyfile. Init.py face ca directorul să fie un pachet. Iată aspectul pachetului pe care vom lucra.
Numele pachetului este pachetul meu . Pentru a începe să lucrați cu pachetul, creați un director numit pachet /. În director, 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 captura 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")
Pachetul e gata de utilizare. Acum apelați pachetul din oricare dintre fișierele dvs., după cum se arată mai jos: test.py:
Aici, mypackage.module1 este importat și i se dă 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 mod1print(mod1.mod1_func1())print(mod1.mod1_func2())print(mod1.mod1_func2())
Ieșire:
Welcome to Module1 function1NoneWelcome to Module1 function2NoneWelcome to Module1 function2None
Tocmai am demonstrat pachetul cu un modul simplu cu funcții în interiorul acestuia. Conform proiectului dvs., puteți, de asemenea, să împachetați cu subpachete. Sub-foldere / având module cu clase definite.
Căi de căutare a modulului Python
În timpul execuției, când python dă peste numele modulului de import , interpretul încearcă să localizeze modulul. Se caută modulul în lista de module încorporate. Mai târziu, directoare definite în sys.path.
Pentru a rezuma, interpretul efectuează următoarea căutare pentru a localiza modulul:
- În directorul dvs. curent.
- În lista de module încorporate
- În interiorul directoarelor sys.path
Puteți obține detalii despre sys.path importând modulul sys și tipărind sys.path. Vă va oferi lista de directoare așa cum se arată mai jos:
importsysprint(sys.path)
Ieșire:
['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\DLLs']
De asemenea, puteți modifica calea și păstra directoarele conform cerințelor dvs.
Utilizarea aliasului modulului în import
De asemenea, puteți converti numele modulului într-un formular mai scurt, oferindu-i un nume de alias. Aliasul se poate face folosind cuvântul cheie.
Sintaxă:
import filename as alias name
Structura de dosare pentru testarea codului va fi după cum urmează:
Mod test/test.pydisplay.py
Următorul este codul din 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 tprint(t.display_message())print(t.display_message1())print(t.my_name)print(t.my_address)
Aliasul utilizat 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!Guru99Mumbai
Importuri absolute și relative în Python
Acum știți cum să importați un fișier ca modul într-un alt 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 sau relative.
Luați în considerare că aveți structura folderelor de proiect, așa cum se arată mai jos:
Dosarul rădăcină este proiectul meu /. Are două subfoldere package1 și package2.
Pachetul folder 1 are două module, module1.py și module2.py.
Folderul package2 are o clasă myclass.py, un subpachet 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 dvs. chiar 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 funcția myfunc1, va trebui să importați după cum urmează:
from package1.module1 import myfunc1orfrom package1 import module1module1.myfunc1()
Pentru a lucra cu funcția myfunc3 va trebui să importați după cum urmează:
from package1.subpkg.module3 import myfunc3orfrom package1.subpkg import module3module3.myfunc3()
Avantajele și dezavantajele utilizării importurilor absolute
Iată avantajele utilizării importurilor absolute:
- Devine ușor de urmărit modulele pentru verificarea codului.
- Ușor de utilizat și foarte simplu.
- Dacă proiectul este mutat pe o altă cale, importurile vor rămâne aceleași.
Dezavantaje ale utilizării importurilor absolute
Aici sunt 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 dosare menționată mai jos, vom vedea cum să importăm aceeași folosind importuri relative.
La importul relativ, modulul de importat este relativ la locația curentă care este locația în care este prezentă declarația de import.
Sintaxă:
La importurile relative, trebuie să adăugați un punct (.) Înainte de numele modulului atunci când importați utilizând din .
Vor fi 2 perioade (...) înainte de numele modulului dacă modulul se află la un nivel în sus față de locația curentă.
Referindu-ne la figura structurii de dosare 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 funcția myfunc1 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.
Dezavantaje ale importurilor relative
Dezavantaje:
- Folosind importurile relative, este dificil să se regăsească locul în care se află codul
Rezumat:
- Importul în Python vă ajută să vă referiți la cod, adică .funcții / obiecte care sunt scrise într-un alt fișier. De asemenea, este utilizat pentru a importa biblioteci / pachete python care sunt instalate folosind pip (managerul de pachete python) și trebuie apoi să îl utilizați în cod.
- Funcționalitatea de import este disponibilă în alte limbi, cum ar fi dactilografiat, JavaScript, java, rubin etc.
- Un modul este python este codul scris în fișier, de exemplu (test.py). În fișierul dvs., puteți avea variabilele, funcțiile sau clasa definită. Î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 fișier. Mai târziu, folosind importul, puteți consulta codul din fișierul de care aveți nevoie.
- Python are modulele sale încorporate și, de asemenea, bibliotecile / pachetele externe instalate utilizând un manager de pachete python (pip), de exemplu, pandas, NumPy etc. sunt denumite module.
- Puteți importa doar o mică parte a modulului, adică numai funcțiile necesare și numele variabilelor din modul în loc să importați codul complet.
- De asemenea, puteți converti numele modulului într-un formular mai scurt, oferindu-i un nume de alias. Aliasul se poate face folosind cuvântul cheie.
- Un pachet este un director cu toate modulele definite în interiorul său. Pentru ca un interpret Python să-l trateze ca pe un pachet, directorul dvs. ar trebui să aibă fișierul __init.py. Init.py face ca directorul să fie un pachet. Iată aspectul pachetului pe care vom lucra.
- În timpul execuției, când python dă peste numele modulului de import , interpretul încearcă să localizeze modulul. Se caută modulul în lista de module încorporate. Mai târziu, directoare definite în sys.path.
- Pentru importurile absolute, trebuie să adăugați întreaga cale a modulului dvs. chiar din folderul rădăcină al proiectului.
- La importul relativ, modulul de importat este relativ la locația curentă care este locația în care este prezentă declarația de import.