Úvod
Python je jedným z najpoužívanejších programovacích jazykov na svete. Moduly sú dôležitou súčasťou kódu v Pythone. Modul je jednoducho .py súbor v kontexte Python 3. To znamená, že na akýkoľvek súbor Pythonu môžete odkazovať ako na modul.
Tieto moduly môžete získať prostredníctvom predpripravenej knižnice. Môžete sa pozrieť na Štandardnú knižnicu Pythonu, kde sa dozviete viac. Tie sa nainštalujú do vášho systému pri inštalácii Pythonu. V iných situáciách môžete tieto moduly nainštalovať pomocou správcu balíkov Pythonu pip. Čo ak však chcete vytvoriť vlastný modul? Ak je to tak, potom vás určite poteší, že v Pythone si môžete vytvárať vlastné moduly.
V tomto podrobnom návode načrtneme kroky, ktoré musíte vykonať, aby ste mohli písať a importovať moduly v Pythone 3.
Požiadavky
Skôr než začneme, musíte sa uistiť, že máte nainštalovaný Python 3 a nastavené programovacie prostredie. Môžete postupovať podľa nášho návodu na inštaláciu Pythonu 3 a nastavenie lokálneho programovacieho prostredia na Ubuntu 16.04, aby ste dokončili inštaláciu v prípade, že ju ešte nemáte pripravenú.
Ako napísať modul?
Začnime písaním modulu. Modul by ste písali rovnako, ako by ste tvorili akýkoľvek iný súbor v Pythone. Typický modul obsahuje definície funkcií, tried a premenných. Následne môžete modul použiť v iných programoch v Pythone.
Pre lepšie pochopenie si uveďme príklad. Povedzme, že chceme vytvoriť súbor s názvom hello.py. Tento súbor neskôr naimportujeme aj do iného súboru. Prvým krokom v tomto procese je vytvorenie funkcie. Táto funkcia bude slúžiť na vypísanie Hello, World! takto:
|
1 2 3 |
# Definícia funkcie def world(): print("Hello, World!") |
V tomto bode vám spustenie príkazu python hello.py neprinesie žiadny výsledok. Je to preto, že sme programu zatiaľ nedali žiadne inštrukcie. Aby to fungovalo, musíme modul naimportovať.
Ako naimportovať modul?
Na to, aby ste naimportovali svoj modul a mohli použiť jeho funkciu, musíte vytvoriť druhý súbor v rovnakom adresári. Tento nový súbor nazveme main_program.py. Dôvod, prečo musia byť oba súbory v rovnakom adresári, je ten, že musíme program naviesť, kde má modul hľadať. To platí pre akýkoľvek nový, vlastný modul, ktorý nie je vstavaný:
|
1 2 3 4 5 |
# Importujte modul hello import hello # Zavolajte funkciu hello.world() |
Na zavolanie funkcie sme použili bodkovú notáciu pre názov modulu. Ďalším spôsobom, ako to urobiť, je použiť metódu from...import . Tu zavoláme funkciu ako world() importovaním modulu ako from hello import world. Nakoniec môžete spustiť príkaz:
|
1 |
python main_program.py |
Príkaz vám zobrazí nasledujúci výstup:
|
1 2 |
Výstup: Hello, World! |
Pridanie premenných do modulu
Ďalej uvidíme, ako pridať premenné do modulu vložením definícií do modulu:
|
1 2 3 4 5 6 |
# Definícia funkcie def world(): print("Hello, World!") # Definícia premennej shark = "Sammy" |
Následne zavoláte premennú vo funkcii print(). Zavoláme ju v súbore main_program.py :
|
1 2 3 4 5 6 7 |
# Importujte modul hello import hello # Zavolajte funkciu hello.world() # Vypíšte premennú print(hello.shark) |
Spustením programu sa zobrazí tento výstup:
|
1 2 3 |
Výstup: Hello, World! Sammy |
Pridanie triedy do modulu
Na záver uvidíme, ako môžete definovať triedu vo vašom súbore pre modul. V pokračovaní nášho príkladu vytvoríme novú triedu s názvom Octopus v súbore hello.py. Priradíme jej tiež atribúty name a color. Potom pridáme funkciu, aby sa dala vypísať:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# Definovať funkciu def world(): print("Ahoj, svet!") # Definovať premennú shark = "Sammy" # Definovať triedu class Octopus: def __init__(self, name, color): self.color = color self.name = name def tell_me_about_the_octopus(self): print("Táto chobotnica je " + self.color + ".") print(self.name + " je meno chobotnice.") |
Ďalej musíte pridať triedu blízko konca súboru main_program.py súboru:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# Importovať modul hello import hello # Zavolať funkciu hello.world() # Vytlačiť premennú print(hello.shark) # Zavolať triedu jesse = hello.Octopus("Jesse", "oranžová") jesse.tell_me_about_the_octopus() |
Triedu môžete zavolať pomocou príkazu hello.Octopus(). Zobrazí vám funkcie a atribúty triedy Octopus v mennom priestore súboru. Ako taký môžete do posledného riadku napísať jesse.tell_me_about_the_octopus() bez toho, aby ste volali hello. Je tiež možné zavolať jednotlivý atribút triedy bez použitia hello. Môžete napríklad jednoducho spustiť jesse.color. Keď program spustíte, zobrazí sa nasledujúci výstup:
|
1 2 3 4 5 |
Výstup: Ahoj, svet! Sammy Táto chobotnica je oranžová. Jesse je meno chobotnice's name. |
Implementácia kódu pomocou modulov
Tam, kde môžete použiť moduly na špecifikáciu definícií, ich môžete použiť aj na implementáciu kódu. Povedzme, že chceme implementovať funkciu world(). Úplne prepíšeme náš pôvodný súbor hello.py :
|
1 2 3 4 5 6 |
# Definovať funkciu def world(): print("Ahoj, svet!") # Zavolať funkciu v rámci modulu world() |
Zo súboru main_program.py vymažeme všetko okrem príkazu import, čím ponecháme nasledujúce:
|
1 2 |
# Importovať modul hello import hello |
Spustením hlavného programového súboru získate tento výstup, keďže program implementuje a vykonáva funkciu world() :
|
1 2 |
Výstup: Ahoj, svet! |
Ako pristupovať k modulu z iného adresára?
Teraz, keď už viete, ako vytvárať a upravovať moduly, potrebujete vedieť, ako k nim pristupovať z iného adresára. To je užitočné, keď potrebujete použiť daný modul v inom projekte. Existujú dva spôsoby, ktoré vysvetlíme nižšie.
-
Pridávanie ciest
Prvou metódou je aktivácia cesty k modulu pomocou programových súborov, ktoré už modul používajú. Bohužiaľ to neznamená, že modul bude dostupný v celom systéme. Preto sa to považuje len za dočasné riešenie. Často sa využíva počas vývojovej fázy projektu.
Proces pridávania môžete spustiť importovaním modulu sys a ďalších dôležitých modulov, ktoré potrebujete použiť. Importujeme ich do hlavného programového súboru. Modul sys nájdete v štandardnej knižnici Pythonu. Potrebujete ho, pretože obsahuje základné parametre a funkcie špecifické pre váš systém.
Uvažujme opäť o našom predchádzajúcom príklade. Povedzme, že súbor hello.py sa nachádza na ceste /usr/sammy/ a súbor main_program.py je v inom adresári. Najprv importujeme modul hello do súboru main_program.py pomocou modulu sys. Ďalej pridáme /usr/sammy/ k ceste:
|
1 2 3 4 5 6 |
import sys sys.path.append('/usr/sammy/') import hello ... |
Ak nastavíte cestu správne, súbor main_program.py súbor sa spustí bez problémov a bez chýb. Dostanete rovnaký výstup, ako keď boli oba súbory v rovnakom adresári.
-
Cesta Python
Druhou možnosťou, ktorú môžete využiť, je cesta Python (Python path). Tu by ste pridali samotný modul do cesty, v ktorej Python hľadá moduly a balíky. Ako môžete pravdepodobne usúdiť, vďaka tomu bude modul dostupný v celom systéme, čo z neho robí realizovateľné trvalé riešenie.
Ak to chcete urobiť, musíte zistiť, kde Python hľadá moduly. Budete musieť spustiť interpret Pythonu z programovacieho prostredia, ktoré vyzerá takto:
|
1 |
python |
Ďalším krokom je importovať sys modul:
|
1 |
>>> import sys |
Ďalej vypíšte systémovú cestu:
|
1 |
>>> print(sys.path) |
Teraz uvidíte systémovú cestu ako váš výstup. Bude tam aspoň jedna. V programovacom prostredí ich však môže byť niekoľko. V zozname vyhľadajte prostredie, ktoré používate. Majte na pamäti, že možno budete chcieť pridať modul aj do hlavnej systémovej cesty Pythonu. Bude to vyzerať takto:
|
1 2 |
Výstup: '/usr/sammy/my_env/lib/python3.5/site-packages' |
Nakoniec presuňte hello.py súbor do tohto adresára a importujte modul nasledovne:
|
1 2 |
import hello ... |
Váš pokus je úspešný, ak program spustí súbor bez toho, aby vygeneroval akékoľvek chyby. V dôsledku tohto procesu budete mať prístup k modulu z akéhokoľvek adresára vo vašom systéme.
Záver
Cieľom tohto návodu bolo pomôcť vám oboznámiť sa s písaním modulov v Pythone. Je to veľmi podobné tomu, ako by ste písali akýkoľvek Python .py súbor. Najprv sme si povedali, čo vlastne Python modul a s ním spojené funkcie sú. Potom sme zistili, ako tieto definície použiť v iných programovacích súboroch v Pythone. Nakoniec sme objasnili podrobnosti o dostupnosti modulov. Teraz už viete, ako písať moduly v Pythone 3, ako aj to, ako k nim pristupovať.
Ak chcete ďalej stavať na svojich znalostiach o programovacom jazyku Python, pozrite si náš blog pre viac zdrojov:
- Python 3: Sprievodca konverziou dátových typov
- Cykly v Pythone 3: Použitie príkazov Break, Continue a Pass
- Používanie formátovačov reťazcov v Pythone 3
Príjemné programovanie!
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.