Kódím.cz
2

Slicing, metody, moduly

Doplníme znalosti a další základy

Moduly

Doposud jsme v našich programech měli k dispozici pouze několik základních funkcí. Zatím jsme viděli tyto

abs, round, len, sum, min, max, sorted, int, float, str, print.

Později si ukážeme, že jich ještě několik přibude, ale o moc víc jich už k dispozici není. S takto omezeným množstvím funkcí bychom si dlouho nevystačili. Python naštěstí nabízí mnoho takzvaných modulů , které obsahují spousty dalších užitečných funkcí.

Moduly jsou v podstatě balíčky funkcí zaměřených na nějaké konkrétní téma, například statistika, zpracování textu, práce se soubory na disku apod. Pokud chceme používat funkce z nějakého modulu, musíme jej nejdřív takzvaně importovat.

Prvním velmi užitečným balíčkem funkcí je modul math. Importujeme jej příkazem

import math

který napíšeme na začátek našeho programu. Pokud pracujeme v Python konzoli, napíšeme tento příkaz prostě na konzoli a dokud ji nezavřeme, můžeme modul používat.

Kromě mnoha jiných obsahuje modul math funkce ceil() a floor(), které zaokrouhlují buď vždy jen dolů nebo jen nahoru. Abychom je mohli zavolat, musíme použít tečkovou notaci.

print(math.ceil(3.1))  # 4
print(math.floor(3.7))  # 3

Mnozí z vás už si stěžovali, že Python neobsahuje funkci, která počítá průměr. Nyní takovou funkci můžeme získat, pokud importujeme modul statistics. Tento modul obsahuje mimo jiné funkci mean(), která počítá vytoužený průměr.

import statistics
print(statistics.mean([1, 2, 3, 4, 5, 6]))  # 3.5
3.5

Kompletní popis všech modulů a jejich funkcí najdeš v dokumentaci.

Pozor na názvy skriptů!

Pozor! Nikdy nepojmenovávejte svůj skript stejně jako modul, který používáte. Pokud byste pojmenovali svůj skript math.py, uvnitř napsali import math a používali nějakou funkci z tohoto modulu, Python ji bohužel nenajde. V tu chvíli totiž místo "pravého" modulu math naimportoval skript math.py ve vašem pracovním adresáři a v něm jistě volanou funkci nemáte definovanou.

Pokud se vám to náhodou stalo a Python vám vypsal něco jako:

AttributeError: partially initialized module 'math' has no attribute 'ceil' (most likely due to a circular import)

Víte už, čím to je. Přejmenujte váš skript na jiný název a pokud se vám v pracovním adresáři vytvořil adresář __pycache__, tak jej také smažte.

Cvičení: Moduly

Bonusy