Moduly
Python organizuje vše do modulů, které slouží pro oddělení jmenných prostorů. Moduly mohou být dále organizovány do balíků (packages). Vznikne tak stromová struktura s libovolným počtem úrovní. Python sám obsahuje obsáhlou knihovnu vestavěných modulů.
Vytváříme a používáme modul¶
Modul v podstatě vznikne uložením souboru. Tento modul může být poté přímo spuštěn (pak mluvíme spíše o skriptu) nebo, jak je tomu obvykle, importován. To se děje pomocí klíčového slova import
. Jakmile je modul importován, můžeme používat jeho obsah (funkce, třídy, globální proměnné apod.).
Tento kód uložte do souboru totojemodul.py v aktuálním adresáři. Tím vytvoříme module totojemodul
.
%%file totojemodul.py
# -*- coding: utf-8 -*-
def foo():
print("Tahle funkce nic nedělá")
return None
Nyní můžeme tento modul importovat
import totojemodul
a použít funkci foo.
totojemodul.foo()
Importovat můžeme také jen některé části module pomocí from ... import
. Z vestavěného modulu sys
importujeme path
, což je seznam adresářů, ve kterých se hledají moduly při importování.
from sys import path
# sys.path obsahuje cesty, ve kterých se hledají moduly při importování
path
Moduly nebo jejich části můžeme i přejmenovat pomocí ... import ... as ...
# přejmenuje modul sys na system
import sys as system
# přejmenuje sys.path na syspath
from sys import path as syspath
# zkusíme, jestli system.path je to samé jako syspath
print(system.path is syspath)
Můžeme také importovat vše z modulu pomocí from ... import *
. Toto se doporučuje dělat pouze v interaktivní použití a pouze pokud dobře víte, co děláte. Jinak totiž Python může přepsat lokální proměnné.
Spuštění modulu jako skriptu¶
Pokud chceme spustil modul jako skript (tj. pomocí python jméno_souboru.py
, případně pomocí %run
v IPythonu), uděláme to pomocí testování __name__
. Tato proměnná obsahuje jméno modulu, v případě skriptu pak obsahuje "__main__". Takto by pak mohl vypadat modul, který po spuštění něco udělá.
def pozdrav(jak, koho):
print("{} {}!".format(jak, koho))
if __name__ == "__main__":
pozdrav("Ahoj", "člověče")
Organizace do balíků¶
Jednoúrovňová hierarchie modulů by jistě byla brzy málo, proto je možné organizovat moduly do balíků (packages). Balík vytvoříme pomocí adresáře, do něhož umístíme soubor __init__.py
. Stačí, aby byl soubor prázdný. Do tohoto adresáře pak můžeme umístit moduly. Pro import pak použijeme import jméno_balíku.jméno_modulu
.
Další informace viz dokumentace.
Komentáře
Comments powered by Disqus