Kādi ir Python moduļi?
Modulis ir fails ar pitona kodu. Kods var būt definētu mainīgo, funkciju vai klases formā. Faila nosaukums kļūst par moduļa nosaukumu.
Piemēram, ja jūsu faila nosaukums ir guru99.py, moduļa nosaukums būs guru99 . Izmantojot moduļa funkcionalitāti, jūs varat sadalīt kodu dažādos failos, nevis ierakstīt visu vienā failā.
Šajā apmācībā jūs uzzināsiet:
- Kādi ir Python moduļi?
- Python importēšanas modulis
- Kā izveidot un importēt moduli Python?
- Klases importēšana Python
- Izmantojot moduli no līdz importēšanai
- Visu importēšana no moduļa
- Izmantojot importēšanas moduli
- Izmantojot importēšanu *
- Dir () funkcija
- Iepakojumi
- PythonModuleSearchPath
- Moduļa aizstājvārda izmantošana importēšanā
- Absolūtais un relatīvais imports Python
- Izmantojot AbsoluteImports
- Izmantojot RelativeImports
Kas ir Python importēšanas modulis?
Fails tiek uzskatīts par moduli pitonā. Lai izmantotu moduli, tas ir jāimportē, izmantojot importēšanas atslēgvārdu. Funkciju vai mainīgos, kas atrodas failā, var izmantot citā failā, importējot moduli. Šī funkcionalitāte ir pieejama citās valodās, piemēram, mašīnrakstā, JavaScript, Java, rubīnā utt.
Kā izveidot un importēt moduli Python?
Tagad mēs izveidosim moduli un importēsim to citā failā.
Šeit ir plūsma moduļa izveidošanai un importēšanai, kā parādīts ekrānuzņēmumā:
Izpildiet norādītās darbības, lai izveidotu moduli pitonā.
Kodu pārbaudei izmantotā mapju struktūra ir šāda:
modtest/test.pydisplay.py
1. darbība. Izveidojiet failu un nosauciet to test.py
2. solis. Test.py iekšpusē izveidojiet funkciju ar nosaukumu display_message ()
Def display_message():return "Welcome to Guru99 Tutorials!"
3. solis. Tagad izveidojiet citu failu display.py.
4. solis. Iekšpusē display.py importējiet moduletest.py failu, kā parādīts zemāk:
import test
Importēšanas laikā jums nav jāmin test.py, bet tikai faila nosaukums.
5. solis)
Pēc tam jūs varat izsaukt funkciju display_message () no testa.py iekšpusē display.py, jums jāizmanto moduļa_nosaukums.funkcijas_nosaukums.
Piemēram, test.display_message ().
Import testprint(test.display_message())
6. solis)
Izpildot display.py, tiks parādīta šāda izeja:
Welcome to Guru99 Tutorials!
Klases importēšana Python
Iepriekš mēs esam redzējuši vienkāršu moduli ar funkciju. Šeit tiks izveidota klase un norādīta klase citā failā.
Mapes struktūra koda pārbaudei ir šāda:
myproj/Car.pydisplay.py
Izveidojiet failu ar nosaukumu Car.py ar šādu kodu:
Faila nosaukums: 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)
Car.py failā ir atribūti brand_name, model un manu_year. Klasē definētās funkcijas ir car_details (), get_Car_brand (), get_Car_model ().
Tagad izmantosim failu Car.py kā moduli citā failā ar nosaukumu display.py.
Faila nosaukums: 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())
Izeja:
BMWCar brand is BMWCar model is Z5Car manufacture year is 2020Car brand is BMWCar model is Z5
Tātad mēs varam piekļūt visiem mainīgajiem un funkcijām no Car.py, izmantojot Car moduli.
Izmantojot moduli no līdz importēšanai
Pilna koda importēšanas vietā no moduļa var importēt tikai nelielu moduļa daļu, ti, tikai nepieciešamās funkcijas un mainīgo nosaukumus.
Ja vēlaties importēt tikai konkrētas lietas, varat izmantot atslēgvārdu “no”, lai importētu vēlamo.
Tātad sintakse ir
from module import your function_name , variables,… etc.
Kodu pārbaudei izmantotā mapju struktūra ir šāda:
modtest/test.pydisplay.py
Vietnē test.py ir 2 funkcijas, kā parādīts:
Faila nosaukums: test.py
defdisplay_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"
Tagad vēlaties funkciju display_message (). Importējamajai funkcijai vai mainīgajam var tieši piekļūt, kā parādīts zemāk:
Faila nosaukums: display.py
from test import display_messageprint(display_message())
Izeja:
Welcome to Guru99 Tutorials!
Tagad, ja jūs izmantojat funkciju display_message1 (), tas radīs kļūdu, ka funkcija nav definēta, kā parādīts zemāk:
from test import display_messageprint(display_message1())
Izeja:
Traceback (most recent call last):File "display.py", line 3, inprint(display_message1())Name Error: name 'display_message1' is not defined
Visu importēšana no moduļa
Importēšana ļauj importēt pilnu moduli, izmantojot importēšanu, kam seko moduļa nosaukums, ti, izmantojamais faila nosaukums vai bibliotēka.
Sintakse:
Import module
Vai arī izmantojot
from module import *
Kodu pārbaudei izmantotā mapju struktūra ir šāda:
modtest/test.pydisplay.py
Tālāk ir sniegta koda informācija test.py
my_name = "Guru99"my_address = "Mumbai"defdisplay_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"
Izmantojot importēšanas moduli
Izmantojot tikai importa moduļa nosaukumu, lai atsauktos uz mainīgajiem un funkcijām moduļa iekšpusē, tam jāpievieno prefikss ar moduļa nosaukumu.
Piemērs
Faila nosaukums: display.py
Import testprint(test.display_message())print(test.display_message1())print(test.my_name)print(test.my_address)
Moduļa nosaukuma pārbaude tiek izmantota, lai atsauktos uz funkciju un mainīgajiem moduļa testā.
Izeja:
Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai
Izmantojot importēšanu *
Apskatīsim piemēru, izmantojot importēšanu * . Izmantojot importēšanu * , funkcijas un mainīgie ir tieši pieejami, kā parādīts zemāk esošajā piemērā:
from test import *print(display_message())print(display_message1())print(my_name)print(my_address)
Izeja:
Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai
Dir () funkcija
Dir () ir iebūvēta funkcija pitonā. Dir () atgriež visas īpašības un metodes, ieskaitot attiecīgā objekta iebūvētās īpašības.
Tātad, kad modulī tiek izmantots dir (), tas sniegs mainīgos, funkcijas, kas atrodas moduļa iekšpusē.
Šeit ir moduļa dir () piemērs. Mums ir klase ar nosaukumu Car.py. Ļaujiet mums importēt automašīnu un piešķirt dir (), lai redzētu izvadi.
Mapes struktūra koda pārbaudei būs šāda:
test prop/Car.pytest.py
Faila nosaukums: 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)
Faila nosaukums: test.py
import Carclass_contents = dir(Car)print(class_contents)
Izeja dod mums klases nosaukumu un visas funkcijas, kas definētas Car.py.
Varat arī mēģināt izmantot dir () iebūvētajā modulī, kas pieejams Python. Izmēģināsim to pašu Json modulī, kā parādīts zemāk esošajā piemērā. Tas parādīs visas json modulī pieejamās īpašības un metodes .
Import jsonjson_details = dir(json)print(json_details)
Izeja:
['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']
Iepakojumi
Pakotne ir direktorijs, kurā ir definēti visi moduļi. Lai panāktu, ka Python tulks to izturas kā pret paketi, direktorijā jābūt init.pyfile. Init.py izveido direktoriju kā pakotni. Šeit ir paketes izkārtojums, pie kura mēs strādāsim.
Iepakojuma nosaukums ir mana pakete . Lai sāktu strādāt ar pakotni, izveidojiet direktoriju pakete /. Katalogā izveidojiet tukšu failu ar nosaukumu __init__.py. Izveidojiet vēl 3 failus module1.py, module2.py un module3.py un definējiet funkcijas, kā parādīts ekrānuzņēmumā. Šeit ir detalizēta informācija par moduliem1.py, module2.py un module3.py
modulis1.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")
modulis2.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")
modulis3.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")
Pakete s gatavs lietošanai. Tagad izsauciet paketi jebkura faila iekšpusē, kā parādīts zemāk: test.py:
Šeit tiek importēts mypackage.module1 un dots aizstājvārda nosaukums mod1. Līdzīgi varat izmantot citus moduļus module2.py un module3.py no manas pakotnes.
import mypackage.module1 as mod1print(mod1.mod1_func1())print(mod1.mod1_func2())print(mod1.mod1_func2())
Izeja:
Welcome to Module1 function1NoneWelcome to Module1 function2NoneWelcome to Module1 function2None
Mēs tikko parādījām paketi ar vienkāršu moduli ar funkcijām tajā. Saskaņā ar jūsu projektu jūs varat arī iepakot ar apakšpakotnēm. Apakšmapes / moduļi ar definētām klasēm.
Python moduļu meklēšanas ceļš
Izpildes laikā, kad pitons sastop importēšanas moduļa nosaukumu , tulks mēģina atrast moduli. Tas meklē moduli iebūvēto moduļu sarakstā. Vēlāk direktoriji, kas definēti sys.path iekšpusē.
Rezumējot, tulks veic šādu meklēšanu, lai atrastu moduli:
- Jūsu pašreizējā direktorijā.
- Iekļauts iebūvēto moduļu sarakstā
- Sys.path direktoriju iekšpusē
Sīkāku informāciju par sys.path var iegūt, importējot sys moduli un izdrukājot sys.path. Tas jums dos direktoriju sarakstu, kā parādīts zemāk:
importsysprint(sys.path)
Izeja:
['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\DLLs']
Varat arī modificēt ceļu un saglabāt direktorijus atbilstoši savām prasībām.
Moduļa aizstājvārda izmantošana importēšanā
Varat arī pārveidot moduļa nosaukumu īsākā formā, piešķirot tam aizstājvārdu. Pseidonīmu var izdarīt, izmantojot atslēgvārdu.
Sintakse:
import filename as alias name
Mapes struktūra koda pārbaudei būs šāda:
Mod test/test.pydisplay.py
Tālāk ir kods test.py
my_name = "Guru99"my_address = "Mumbai"def display_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"
Tagad vietnē test.py vietnē display.py tiks izmantots aizstājvārds
Import test as tprint(t.display_message())print(t.display_message1())print(t.my_name)print(t.my_address)
Pārbaudes modulim izmantotais aizstājvārds ir t. Tātad funkciju un mainīgos no test.py var norādīt, izmantojot aizstājvārdu t.
Izeja:
Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai
Absolūtais un relatīvais imports Python
Tagad jūs zināt, kā importēt failu kā moduli cita faila iekšpusē. Ļaujiet mums tagad uzzināt, kā pārvaldīt mapēs pieejamos failus. Mapēs esošos failus var importēt, izmantojot absolūtu vai relatīvu importu.
Apsveriet, ka jums ir projekta mapes struktūra, kā parādīts zemāk:
Saknes mape ir mans projekts /. Tam ir divas apakšmapes package1 un package2.
Mapē package1 ir divi moduļi: module1.py un module2.py.
Mapei pack2 ir viena klase myclass.py, apakšpaketes subpkg ar module3.py un pēdējais module4.py.
- Programmā module1.py ir funkcijacalledmyfunc1.
- Programmā module2.py ir funkcijacalledmyfunc2.
- Programmā module3.py ir funkcijacalledmyfunc3.
- Programmā module4.py ir funkcijacalledmyfunc4.
Absolūtā importa izmantošana
Absolute importēšanai jums jāpievieno viss moduļa ceļš tieši no projekta saknes mapes.
Apskatīsim, kā izmantot absolūto importu, lai atsauktos uz funkcijām, kas atrodas katrā modulī.
Lai strādātu ar functionmyfunc1, jums būs jāimportē šādi:
from package1.module1 import myfunc1orfrom package1 import module1module1.myfunc1()
Lai strādātu ar funkciju myfunc3, jums būs jāimportē šādi:
from package1.subpkg.module3 import myfunc3orfrom package1.subpkg import module3module3.myfunc3()
Absolūtā importa izmantošanas priekšrocības un trūkumi
Šeit ir absolūtā importa izmantošanas priekšrocības:
- Kodu pārbaudei kļūst viegli izsekot moduļiem.
- Viegli lietojams un ļoti vienkāršs.
- Ja projekts tiek pārvietots uz citu ceļu, imports joprojām nemainīsies.
Absolūtā importa izmantošanas trūkumi
Šeit ir absolūtā importa izmantošanas trūkumi:
Trūkumi:
- Importēšanas ceļš var būt ļoti garš, ja moduļi ir ligzdoti un ja moduļu nosaukums ir garš.
Relatīvā importa izmantošana
Ņemot vērā to pašu mapju struktūru, kas minēta zemāk, mēs redzēsim, kā importēt to pašu, izmantojot relatīvo importu.
Relatīvā importēšanas laikā importējamais modulis ir salīdzināms ar pašreizējo atrašanās vietu, kas ir vieta, kur atrodas importa paziņojums.
Sintakse:
Relatīvā imports, jums ir nepieciešams, lai pievienotu punktu (.), Pirms moduļa nosaukumu, importējot izmanto no .
Pirms moduļa nosaukuma būs divi periodi (…), ja modulis atrodas vienā līmenī uz augšu no pašreizējās atrašanās vietas.
Atsaucoties uz iepriekš minēto mapju struktūras attēlu, mums ir šādi moduļi ar to funkciju, uz kuriem mums ir jāatsaucas.
- Programmā module1.py ir funkcijacalledmyfunc1.
- Programmā module2.py ir funkcijacalledmyfunc2.
- Programmā module3.py ir funkcijacalledmyfunc3.
- Programmā module4.py ir funkcijacalledmyfunc4.
Lai strādātu ar functionmyfunc1, jums būs jāimportē šādi:
from .module1 import myfunc1
Lai strādātu ar funkciju myfunc3, jums būs jāimportē šādi:
from .subpkg.module3 import myfunc3
Relatīvā importa priekšrocības
Priekšrocības:
- Ar relatīvo importu ir viegli strādāt.
- No pašreizējās atrašanās vietas importu var saīsināt salīdzinājumā ar absolūto importu.
Relatīvā importa trūkumi
Trūkumi:
- Izmantojot relatīvo importu, ir grūti izsekot koda atrašanās vietai
Kopsavilkums:
- Importēšana Python palīdz jums atsaukties uz kodu, ti, uz .functions / objektiem, kas ir ierakstīti citā failā. To izmanto arī, lai importētu python bibliotēkas / pakotnes, kuras ir instalētas, izmantojot pip (python pakotņu pārvaldnieks), un pēc tam jums tas jāizmanto kodā.
- Importēšanas funkcionalitāte ir pieejama citās valodās, piemēram, mašīnrakstā, JavaScript, Java, rubīnā utt.
- Modulis ir python ir kods, kas ierakstīts failā, piemēram (test.py). Faila iekšpusē varat definēt mainīgos, funkcijas vai klasi. Viss fails kļūst par moduli, un to var importēt citā failā, atsaucoties uz kodu.
- Izmantojot moduļa funkcionalitāti, jūs varat sadalīt kodu dažādos failos, nevis ierakstīt visu vienā failā. Vēlāk, izmantojot importēšanu, varat atsaukties uz kodu failā, kas jums nepieciešams.
- Python ir iebūvēti moduļi, kā arī ārējās bibliotēkas / pakotnes, kas instalētas, izmantojot python pakotņu pārvaldnieku (pip), piemēram, pandas, NumPy utt., Tiek sauktas par moduļiem.
- Pilna koda importēšanas vietā no moduļa var importēt tikai nelielu moduļa daļu, ti, tikai nepieciešamās funkcijas un mainīgo nosaukumus.
- Varat arī pārveidot moduļa nosaukumu īsākā formā, piešķirot tam aizstājvārdu. Pseidonīmu var izdarīt, izmantojot atslēgvārdu.
- Pakotne ir direktorijs, kurā ir definēti visi moduļi. Lai panāktu, ka Python tulks to izturas kā pret paketi, direktorijā jābūt failam __init.pyfile. Init.py izveido direktoriju kā pakotni. Šeit ir paketes izkārtojums, pie kura mēs strādāsim.
- Izpildes laikā, kad pitons sastop importēšanas moduļa nosaukumu , tulks mēģina atrast moduli. Tas meklē moduli iebūvēto moduļu sarakstā. Vēlāk direktoriji, kas definēti sys.path iekšpusē.
- Absolute importēšanai jums jāpievieno viss moduļa ceļš tieši no projekta saknes mapes.
- Relatīvā importēšanas laikā importējamais modulis ir salīdzināms ar pašreizējo atrašanās vietu, kas ir vieta, kur atrodas importa paziņojums.