PEP8 (Python)
Owner: Daniel Vítek Tags: designpatterns, python
PEP 8 je oficiální stylový průvodce pro psaní Python kódu. Název pochází z „Python Enhancement Proposal 8“. Je to soubor doporučení, který má zajistit, aby byl Python kód čitelný, konzistentní a snadno udržovatelný. Není to povinné, ale většina Python komunity ho dodržuje.
Hlavní body PEP 8 zahrnují:
- Odsazování a mezery
- Používat 4 mezery pro odsazení (nikoliv tabulátor).
- Mezery kolem operátorů:
x = y + z(správně),x=y+z(méně čitelné).
- Maximální délka řádku
- Doporučeno 79 znaků pro běžný kód a 72 znaků pro komentáře a dokumentační řetězce.
- Pojmenování
- Funkce a proměnné:
snake_case(my_variable,calculate_sum) - Třídy:
CamelCase(MyClass,DataProcessor) - Konstanty:
ALL_CAPS(MAX_COUNT,DEFAULT_TIMEOUT)
- Funkce a proměnné:
- Prázdné řádky
- Oddělovat funkce a třídy dvěma prázdnými řádky.
- Metody uvnitř třídy oddělovat jedním prázdným řádkem.
- Importy
- Každý import na nový řádek.
- Importy uspořádat ve třech blocích: standardní knihovny, externí knihovny, lokální moduly.
- Komentáře a docstringy
- Komentáře mají vysvětlovat proč něco děláme, ne jen co děláme.
- Používat triple quotes pro dokumentační řetězce funkcí a tříd.
- Další doporučení
- Vyhnout se více než jedné instrukci na řádku.
- Preferovat čitelnost před „hezkými“ zkratkami.
Příklad
Původní kód (špatně podle PEP 8)
def addNumbers(a,b): return a+b
def printresult(x,y):print("Result:",addNumbers(x,y))
printresult(5,10)
Problémy:
- Funkce a proměnné nejsou v
snake_case. - Chybí mezery kolem operátorů.
- Funkce na jednom řádku (
return a+b) je méně čitelná. printuvnitř funkce bez odsazení a s mezerou.
Upravený kód (dle PEP 8)
def add_numbers(a, b):
"""Vrátí součet dvou čísel."""
return a + b
def print_result(x, y):
"""Vytiskne výsledek součtu dvou čísel."""
print("Result:", add_numbers(x, y))
print_result(5, 10)
Zlepšení:
- Funkce a proměnné používají snake_case.
- Mezera kolem operátorů.
- Funkce mají docstringy.
- Každá instrukce na vlastním řádku, kód je přehlednější.