Čo sú moduly v Pythone?
Modul je súbor s kódom python. Kód môže byť vo forme premenných, funkcií alebo definovaných tried. Názov súboru sa stane názvom modulu.
Napríklad, ak je váš názov súboru guru99.py, názov modulu bude guru99 . Vďaka funkcii modulu môžete svoj kód rozdeliť do rôznych súborov namiesto toho, aby ste písali všetko do jedného súboru.
V tomto návode sa dozviete:
- Čo sú moduly v Pythone?
- Modul importu Pythonu
- Ako vytvoriť a importovať modul v Pythone?
- Import triedy v Pythone
- Pomocou modulu od importu
- Importuje sa všetko z modulu
- Pomocou modulu importu
- Pomocou importu *
- Funkcia dir ()
- Balíčky
- PythonModuleSearchPath
- Pri importe sa používa alias modulu
- Absolútny a relatívny import v Pythone
- UsingAbsoluteImports
- UsingRelativeImports
Čo je modul importu Pythonu?
Súbor sa považuje za modul v pythone. Ak chcete modul použiť, musíte ho importovať pomocou kľúčového slova import . Funkciu alebo premenné nachádzajúce sa v súbore je možné použiť v inom súbore importom modulu. Táto funkcia je k dispozícii v iných jazykoch, ako je strojopis, JavaScript, Java, Ruby atď.
Ako vytvoriť a importovať modul v Pythone?
Teraz vytvoríme modul a importujeme ho do iného súboru.
Tu je postup vytvorenia a importu modulu, ako je znázornené na snímke obrazovky:
Postupujte podľa uvedených krokov a vytvorte modul v pythone.
Štruktúra priečinkov použitých na testovanie kódu je nasledovná:
modtest/test.pydisplay.py
Krok 1) Vytvorte súbor a pomenujte ho test.py
Krok 2) Vo vnútri test.py vytvorte funkciu s názvom display_message ()
Def display_message():return "Welcome to Guru99 Tutorials!"
Krok 3) Teraz vytvorte ďalší súbor display.py.
Krok 4) Vo vnútri display.py importujte súbor moduletest.py, ako je uvedené nižšie:
import test
Pri importe nemusíte uvádzať test.py, ale iba názov súboru.
Krok 5)
Potom môžete zavolať funkciu display_message () z test.py vo vnútri display.py, musíte využiť module_name.function_name.
Napríklad test.display_message ().
Import testprint(test.display_message())
Krok 6)
Po spustení súboru display.py získate nasledujúci výstup:
Welcome to Guru99 Tutorials!
Import triedy v Pythone
Už skôr sme videli jednoduchý modul s funkciou. Tu sa vytvorí trieda a odkáže sa na triedu v inom súbore.
Štruktúra priečinkov na testovanie kódu je nasledovná:
myproj/Car.pydisplay.py
Vytvorte súbor s názvom Car.py s nasledujúcim kódom:
Názov súboru: 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)
V súbore Car.py sú atribúty brand_name, model a manu_year. Funkcie definované vo vnútri triedy sú car_details (), get_Car_brand (), get_Car_model ().
Teraz použijeme súbor Car.py ako modul v inom súbore s názvom display.py.
Názov súboru: 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())
Výkon:
BMWCar brand is BMWCar model is Z5Car manufacture year is 2020Car brand is BMWCar model is Z5
Takže môžeme pristupovať ku všetkým premenným a funkciám z Car.py pomocou modulu Car.
Pomocou modulu od importu
Môžete importovať iba malú časť modulu, tj iba potrebné funkcie a názvy premenných z modulu, namiesto importovania celého kódu.
Ak chcete importovať iba konkrétne veci, môžete na importovanie toho, čo chcete, použiť kľúčové slovo „od“.
Syntax teda je
from module import your function_name , variables,… etc.
Štruktúra priečinkov použitých na testovanie kódu je nasledovná:
modtest/test.pydisplay.py
V test.py sú dve funkcie, ako je to znázornené:
Názov súboru: test.py
defdisplay_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"
Teraz chcete funkciu display_message (). K funkcii alebo premennej, ktorú importujete, je priamy prístup, ako je uvedené nižšie:
Názov súboru: display.py
from test import display_messageprint(display_message())
Výkon:
Welcome to Guru99 Tutorials!
Ak teraz používate funkciu display_message1 (), spôsobí to chybu, že funkcia nie je definovaná, ako je uvedené nižšie:
from test import display_messageprint(display_message1())
Výkon:
Traceback (most recent call last):File "display.py", line 3, inprint(display_message1())Name Error: name 'display_message1' is not defined
Importuje sa všetko z modulu
Import vám umožňuje importovať celý modul pomocou importu nasledovaného názvom modulu, tj. Názvom súboru alebo knižnicou, ktorá sa má použiť.
Syntax:
Import module
Alebo pomocou
from module import *
Štruktúra priečinkov použitých na testovanie kódu je nasledovná:
modtest/test.pydisplay.py
Nasledujú podrobnosti o kóde vo vnútri test.py
my_name = "Guru99"my_address = "Mumbai"defdisplay_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"
Pomocou modulu importu
Ak chcete odkazovať na premenné a funkcie vo vnútri modulu, stačí importovať názov modulu. Pred názov modulu sa musí vložiť predpona.
Príklad
Názov súboru: display.py
Import testprint(test.display_message())print(test.display_message1())print(test.my_name)print(test.my_address)
Test názvu modulu sa používa na označenie funkcie a premenných vo vnútri testu modulu.
Výkon:
Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai
Pomocou importu *
Pozrime sa na príklad pomocou importu * . Pomocou importu * sú funkcie a premenné priamo prístupné, ako je uvedené v príklade nižšie:
from test import *print(display_message())print(display_message1())print(my_name)print(my_address)
Výkon:
Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai
Funkcia dir ()
Dir () je vstavaná funkcia v pythone. Funkcia dir () vráti všetky vlastnosti a metódy vrátane vstavaných vlastností daného objektu.
Takže keď sa na module použije dir (), dá vám premenné, funkcie, ktoré sú prítomné vo vnútri modulu.
Tu je príklad práce modulu dir (). Máme triedu s názvom Car.py. Dovoľte nám importovať auto a priradiť k dir (), aby sme videli výstup.
Štruktúra priečinkov na testovanie kódu bude nasledovná:
test prop/Car.pytest.py
Názov súboru: 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ázov súboru: test.py
import Carclass_contents = dir(Car)print(class_contents)
Výstup nám dá názov triedy a všetkých funkcií definovaných v Car.py.
Môžete tiež vyskúšať použiť príkaz dir () na vstavanom module dostupnom v Pythone. Vyskúšajme to isté na module json, ako je to znázornené v príklade nižšie. Zobrazí všetky vlastnosti a metódy dostupné v module json .
Import jsonjson_details = dir(json)print(json_details)
Výkon:
['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']
Balíčky
Balík je adresár, v ktorom sú definované všetky moduly. Ak chcete, aby ho interpret jazyka Python považoval za balík, váš adresár by mal mať súbor init.pyfile. Init.py vytvorí adresár ako balík. Tu je rozloženie balíka, na ktorom budeme pracovať.
Názov balíka je môj balík . Ak chcete začať pracovať s balíkom, vytvorte adresár s názvom balíček /. V adresári vytvorte prázdny súbor s názvom __init__.py. Vytvorte ďalšie 3 súbory module1.py, module2.py a module3.py a definujte funkcie tak, ako je to znázornené na snímke obrazovky. Tu sú podrobnosti o moduloch1.py, module2.py a 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")
Balíček je pripravený na použitie. Teraz zavolajte balík do ktoréhokoľvek z vašich súborov, ako je uvedené nižšie: test.py:
Tu sa mypackage.module1 naimportuje a dostane alias názov ako mod1. Podobne môžete použiť ďalšie moduly module2.py a module3.py z môjho balíka.
import mypackage.module1 as mod1print(mod1.mod1_func1())print(mod1.mod1_func2())print(mod1.mod1_func2())
Výkon:
Welcome to Module1 function1NoneWelcome to Module1 function2NoneWelcome to Module1 function2None
Práve sme predviedli balíček s jednoduchým modulom s funkciami v ňom. Podľa vášho projektu môžete tiež zabaliť s čiastkovými balíčkami. Podadresáre / majúce moduly s definovanými triedami.
Cesta vyhľadávania modulu Python
Počas vykonávania, keď python narazí na názov importovaného modulu , sa tlmočník pokúsi modul vyhľadať. Vyhľadá modul v zozname zabudovaných modulov. Neskôr vo všetkých adresároch definované vo vnútri sys.path.
Ak to zhrnieme, tlmočník vyhľadá modul nasledujúcim spôsobom:
- Vo vašom aktuálnom adresári.
- V zozname zabudovaných modulov
- Vo vnútri adresárov sys.path
Podrobnosti o sys.path získate importom modulu sys a vytlačením sys.path. Poskytne vám zoznam adresárov, ako je uvedené nižšie:
importsysprint(sys.path)
Výkon:
['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\DLLs']
Môžete tiež upraviť cestu a zachovať adresáre podľa svojich požiadaviek.
Pri importe sa používa alias modulu
Názov modulu môžete tiež previesť na kratšiu formu tak, že mu dáte alias. Alias je možné vykonať pomocou kľúčového slova.
Syntax:
import filename as alias name
Štruktúra priečinkov na testovanie kódu bude nasledovná:
Mod test/test.pydisplay.py
Nasleduje kód vo vnútri test.py
my_name = "Guru99"my_address = "Mumbai"def display_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"
Teraz použije alias pre test.py v display.py
Import test as tprint(t.display_message())print(t.display_message1())print(t.my_name)print(t.my_address)
Alias, ktorý sa používa pre testovací modul, je t. Funkciu a premenné z test.py teda možno odkázať pomocou aliasu t.
Výkon:
Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai
Absolútny a relatívny import v Pythone
Teraz viete, ako importovať súbor ako modul do iného súboru. Pozrime sa teraz, ako spravovať súbory dostupné v priečinkoch. Súbory v priečinkoch je možné importovať pomocou absolútneho alebo relatívneho importu.
Zvážte, že máte štruktúru priečinkov projektu, ako je uvedené nižšie:
Koreňový priečinok je môj projekt /. Má dve podpriečinky package1 a package2.
Priečinok package1 má dva moduly, module1.py a module2.py.
Priečinok package2 má jednu triedu myclass.py, čiastkový balík subpkg s module3.py a posledný module4.py.
- V module1.py je funkcia zvanámyfunc1.
- V module2.py je funkcia zvanámyfunc2.
- V module3.py je funkcia zvanámyfunc3.
- V module4.py je funkcia zvanámyfunc4.
Používanie absolútnych dovozov
Pre absolútne importy musíte pridať celú cestu k vášmu modulu priamo z koreňového priečinka projektu.
Pozrime sa teraz, ako využiť absolútne importy na odkazy na funkcie prítomné v každom z modulov.
Ak chcete pracovať s funkcioumyfunc1, budete musieť importovať nasledovne:
from package1.module1 import myfunc1orfrom package1 import module1module1.myfunc1()
Ak chcete pracovať s funkciou myfunc3, budete musieť importovať nasledovne:
from package1.subpkg.module3 import myfunc3orfrom package1.subpkg import module3module3.myfunc3()
Výhody a nevýhody použitia absolútneho dovozu
Tu sú výhody použitia absolútneho importu:
- Je ľahké spätne vysledovať moduly na kontrolu kódu.
- Ľahko použiteľné a veľmi priame.
- Ak sa projekt presunie na inú cestu, importy zostanú rovnaké.
Nevýhody použitia absolútneho dovozu
Tu sú nevýhody použitia absolútneho dovozu:
Nevýhody:
- Cesta importu môže byť v prípade veľmi dlhá, moduly sú vnorené a ak je názov modulov zdĺhavý.
Používanie relatívnych dovozov
Ak vezmeme do úvahy rovnakú štruktúru priečinkov uvedenú nižšie, uvidíme, ako ich importovať pomocou relatívnych importov.
Pri relatívnom importe je modul, ktorý sa má importovať, relatívny k aktuálnemu umiestneniu, čo je umiestnenie, kde sa nachádza príkaz na import.
Syntax:
Pri relatívnom importe musíte pri importe pomocou z pridať pred názov modulu bodku (.) .
Ak je modul v jednej úrovni od aktuálneho umiestnenia, budú to pred menom modulu dve obdobia (...).
Pokiaľ ide o vyššie uvedený obrázok štruktúry priečinkov, máme nasledujúce moduly s ich funkciou, na ktoré sa musíme odvolávať.
- V module1.py je funkcia zvanámyfunc1.
- V module2.py je funkcia zvanámyfunc2.
- V module3.py je funkcia zvanámyfunc3.
- V module4.py je funkcia zvanámyfunc4.
Ak chcete pracovať s funkcioumyfunc1, budete musieť importovať nasledovne:
from .module1 import myfunc1
Aby ste mohli pracovať s funkciou myfunc3, budete musieť importovať nasledovne:
from .subpkg.module3 import myfunc3
Výhody relatívneho dovozu
Výhody:
- S relatívnym importom je ľahké pracovať.
- Zo súčasného umiestnenia sa dá dovoz v porovnaní s absolútnym dovozom skrátiť.
Nevýhody relatívneho dovozu
Nevýhody:
- Pri použití relatívnych importov je ťažké vysledovať, kde sa kód nachádza
Zhrnutie:
- Import v Pythone vám pomôže odkázať na kód, tj. Funkcie / objekty, ktoré sú zapísané v inom súbore. Používa sa tiež na import knižníc / balíkov pythonu, ktoré sú nainštalované pomocou pipu (správca balíkov python), a musíte ich potom použiť vo svojom kóde.
- Funkcia importu je k dispozícii v iných jazykoch, ako je strojopis, JavaScript, Java, Ruby atď.
- Modul je python, tj kód napísaný vo vnútri súboru, napríklad (test.py). V súbore môžete mať definované svoje premenné, funkcie alebo triedu. Celý súbor sa stáva modulom a je možné ho importovať do iného súboru, aby sa odkazoval na kód.
- Vďaka funkcii modulu môžete svoj kód rozdeliť do rôznych súborov namiesto toho, aby ste písali všetko do jedného súboru. Neskôr pomocou importu môžete odkázať na kód vo vnútri súboru, ktorý potrebujete.
- Python má zabudované moduly a tiež externé knižnice / balíky nainštalované pomocou správcu balíkov python (pip), napr. Pandy, NumPy atď., Sa označujú ako moduly.
- Môžete importovať iba malú časť modulu, tj iba potrebné funkcie a názvy premenných z modulu, namiesto importovania celého kódu.
- Názov modulu môžete tiež previesť na kratšiu formu tak, že mu dáte alias. Alias je možné vykonať pomocou kľúčového slova.
- Balík je adresár, v ktorom sú definované všetky moduly. Ak chcete, aby ho tlmočník Pythonu považoval za balík, váš adresár by mal mať súbor __init.pyfile. Init.py vytvorí adresár ako balík. Tu je rozloženie balíka, na ktorom budeme pracovať.
- Počas vykonávania, keď python narazí na názov importovaného modulu , sa tlmočník pokúsi modul vyhľadať. Vyhľadá modul v zozname zabudovaných modulov. Neskôr vo všetkých adresároch definované vo vnútri sys.path.
- Pre absolútne importy musíte pridať celú cestu k vášmu modulu priamo z koreňového priečinka projektu.
- Pri relatívnom importe je modul, ktorý sa má importovať, relatívny k aktuálnemu umiestneniu, čo je umiestnenie, kde sa nachádza príkaz na import.