Úvod
Python je jedním z nejpoužívanějších programovacích jazyků na světě. Moduly jsou kritickou součástí kódu v Pythonu. Modul je jednoduše .py soubor v kontextu Python 3. To znamená, že na jakýkoli soubor v Pythonu můžete odkazovat jako na modul.
Tyto moduly můžete získat prostřednictvím předpřipravené knihovny. Můžete se podívat na Standardní knihovnu Pythonu, abyste se dozvěděli více. Ty se nainstalují do vašeho systému při instalaci Pythonu. V jiných situacích můžete tyto moduly nainstalovat pomocí správce balíčků Pythonu pip. Ale co když chcete vytvořit vlastní modul? Pokud je tomu tak, pak vás jistě potěší, že si v Pythonu můžete vytvořit vlastní moduly.
V tomto podrobném návodu nastíníme kroky, které musíte dodržet, abyste mohli psát a importovat moduly v Pythonu 3.
Požadavky
Než začneme, musíte se ujistit, že máte nainstalovaný Python 3 a nastavené programovací prostředí. Můžete postupovat podle našeho návodu na instalaci Pythonu 3 a nastavení lokálního programovacího prostředí na Ubuntu 16.04, abyste dokončili instalaci, pokud ji ještě nemáte připravenou.
Jak napsat modul?
Začněme psaním modulu. Modul byste napsali stejně jako jakýkoli jiný soubor v Pythonu. Typický modul se skládá z definic funkcí, tříd a proměnných. Následně můžete modul použít v jiných programech v Pythonu.
Pro lepší pochopení si uveďme příklad. Řekněme, že chceme vytvořit soubor s názvem hello.py. Ten později naimportujeme i do jiného souboru. Prvním krokem v tomto procesu je vytvoření funkce. Tato funkce bude sloužit k vytištění Hello, World! takto:
|
1 2 3 |
# Definovat funkci def world(): print("Hello, World!") |
V tomto okamžiku vám spuštění příkazu python hello.py nepřinese žádný výsledek. Je to proto, že jsme programu zatím nedali žádné instrukce. Aby to fungovalo, musíme modul naimportovat.
Jak naimportovat modul?
Abyste mohli naimportovat svůj modul, abyste z něj udělali funkci, musíte vytvořit druhý soubor ve stejném adresáři. Tento nový soubor nazveme main_program.py. Důvod, proč musí být oba soubory ve stejném adresáři, je ten, že musíme program navést, kde má modul najít. To platí pro jakýkoli nový, vlastní modul, který není vestavěný:
|
1 2 3 4 5 |
# Importovat modul hello import hello # Volání funkce hello.world() |
K volání funkce jsme použili tečkovou notaci pro název modulu. Dalším způsobem, jak to udělat, je použít metodu from...import . Zde zavoláme funkci jako world() importováním modulu jako from hello import world. Nakonec můžete spustit příkaz:
|
1 |
python main_program.py |
Příkaz vám zobrazí následující výstup:
|
1 2 |
Výstup: Hello, World! |
Přidání proměnných do modulu
Dále uvidíme, jak do modulu přidat proměnné vložením definic do modulu:
|
1 2 3 4 5 6 |
# Definovat funkci def world(): print("Hello, World!") # Definovat proměnnou shark = "Sammy" |
Následně zavoláte proměnnou ve funkci print(). Zavoláme ji v souboru main_program.py :
|
1 2 3 4 5 6 7 |
# Importovat modul hello import hello # Volání funkce hello.world() # Vypsat proměnnou print(hello.shark) |
Spuštěním programu se zobrazí tento výstup:
|
1 2 3 |
Výstup: Hello, World! Sammy |
Přidání třídy do modulu
Na závěr se podíváme na to, jak můžete definovat třídu ve svém souboru pro daný modul. V našem příkladu budeme pokračovat vytvořením nové třídy s názvem Octopus v souboru hello.py. Přiřadíme jí také atributy name a color. Poté přidáme funkci, která umožní její vytištění:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# Definování funkce def world(): print("Ahoj, světe!") # Definování proměnné shark = "Sammy" # Definování třídy class Octopus: def __init__(self, name, color): self.color = color self.name = name def tell_me_about_the_octopus(self): print("Tato chobotnice je " + self.color + ".") print(self.name + " je jméno této chobotnice.") |
Dále musíte přidat třídu blízko konce souboru main_program.py souboru:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# Importování modulu hello import hello # Volání funkce hello.world() # Výpis proměnné print(hello.shark) # Volání třídy jesse = hello.Octopus("Jesse", "oranžová") jesse.tell_me_about_the_octopus() |
Třídu můžete zavolat pomocí příkazu hello.Octopus(). Zobrazí vám funkce a atributy třídy Octopus v jmenném prostoru souboru. Jako takové můžete na posledním řádku napsat jesse.tell_me_about_the_octopus() bez volání hello. Je také možné zavolat jednotlivý atribut třídy bez použití hello. Můžete například jednoduše spustit jesse.color. Po spuštění programu se zobrazí následující výstup:
|
1 2 3 4 5 |
Výstup: Ahoj, světe! Sammy Tato chobotnice je oranžová. Jesse je té chobotnice's jméno. |
Implementace kódu pomocí modulů
Zatímco moduly můžete používat k určení definic, můžete je také použít k implementaci kódu. Řekněme, že chceme implementovat funkci world(). Náš původní soubor hello.py zcela přepíšeme:
|
1 2 3 4 5 6 |
# Definování funkce def world(): print("Ahoj, světe!") # Volání funkce v rámci modulu world() |
Ze souboru main_program.py smažeme vše kromě příkazu import, takže zůstane následující:
|
1 2 |
# Importování modulu hello import hello |
Spuštěním hlavního programového souboru získáte tento výstup, protože program implementuje a spouští funkci world() :
|
1 2 |
Výstup: Ahoj, světe! |
Jak přistupovat k modulu z jiného adresáře?
Nyní, když víte, jak vytvářet a upravovat moduly, potřebujete vědět, jak k nim přistupovat z jiného adresáře. To je užitečné, když potřebujete použít daný modul v jiném projektu. Existují dva způsoby, které si vysvětlíme níže.
-
Přidávání cest
První metodou je aktivace cesty k modulu pomocí programových souborů, které již modul používají. To však bohužel neznamená, že modul bude dostupný v celém systému. Proto se to považuje pouze za dočasné řešení. Často se používá během vývojové fáze projektu.
Proces přidávání můžete zahájit importem modulu sys a dalších důležitých modulů, které potřebujete použít. Importujeme je do hlavního programového souboru. Modul sys naleznete ve standardní knihovně Pythonu. Potřebujete ho, protože obsahuje základní parametry a funkce specifické pro váš systém.
Podívejme se znovu na náš předchozí příklad. Řekněme, že soubor hello.py se nachází v cestě /usr/sammy/ a soubor main_program.py je v jiném adresáři. Nejprve importujeme modul hello do souboru main_program.py pomocí modulu sys. Dále připojíme /usr/sammy/ k cestě:
|
1 2 3 4 5 6 |
import sys sys.path.append('/usr/sammy/') import hello ... |
Pokud nastavíte cestu správně, soubor main_program.py soubor se spustí snadno a bez chyb. Získáte stejný výstup, jako když byly oba soubory ve stejném adresáři.
-
Cesta Pythonu
Další možností, kterou můžete zvolit, je cesta Pythonu. Zde byste přidali samotný modul do cesty, kterou Python kontroluje pro moduly a balíčky. Jak můžete pravděpodobně odvodit, díky tomu bude modul dostupný v celém systému, což z něj činí schůdné trvalé řešení.
Chcete-li to provést, musíte zjistit, kde Python hledá moduly. Budete muset spustit interpret Pythonu z programovacího prostředí, které vypadá takto:
|
1 |
python |
Dalším krokem je importovat sys modul:
|
1 |
>>> import sys |
Dále vypište systémovou cestu:
|
1 |
>>> print(sys.path) |
Nyní uvidíte jako výstup systémovou cestu. Bude tam alespoň jedna. V programovacím prostředí jich však může být několik. V seznamu vyhledejte prostředí, které používáte. Mějte na paměti, že možná budete chtít modul přidat také do hlavní systémové cesty Pythonu. Bude to vypadat takto:
|
1 2 |
Výstup: '/usr/sammy/my_env/lib/python3.5/site-packages' |
Nakonec přesuňte hello.py soubor do tohoto adresáře a importujte modul následovně:
|
1 2 |
import hello ... |
Úspěšní budete, pokud program spustí soubor bez jakýchkoli chyb. V důsledku tohoto procesu budete mít k modulu přístup z jakéhokoli adresáře ve vašem systému.
Závěr
Cílem tohoto návodu bylo pomoci vám seznámit se s psaním modulů v Pythonu. Je to velmi podobné tomu, jak byste psali jakýkoli Python .py soubor. Nejprve jsme si řekli, co to vlastně modul v Pythonu a s ním spojené funkce jsou. Poté jsme zjistili, jak tyto definice použít v jiných programovacích souborech v Pythonu. Nakonec jsme vyřešili podrobnosti o dostupnosti modulů. Nyní už víte, jak psát moduly v Pythonu 3 a jak k nim přistupovat.
Chcete-li dále stavět na svých znalostech o programovacím jazyce Python, podívejte se na náš blog pro další zdroje:
- Python 3: Průvodce převodem datových typů
- Cykly v Pythonu 3: Použití příkazů Break, Continue a Pass
- Použití formátování řetězců v Pythonu 3
Přejeme příjemné programování!
Komentáře
Zatím žádné komentáře. Buďte první.