Přeskočit na obsah

Python

Z Infopedia
Rozbalit box

Obsah boxu

Šablona:Infobox - programovací jazyk Python je vysokoúrovňový, interpretovaný, víceúčelový programovací jazyk. Jeho designová filozofie klade důraz na čitelnost kódu a jednoduchost syntaxe, což programátorům umožňuje vyjádřit koncepty na menším počtu řádků kódu, než by bylo možné v jazycích jako C++ nebo Java. Jazyk poskytuje konstrukce, které umožňují psát přehledný kód jak pro malé, tak pro velké projekty.

Python podporuje více programovacích paradigmat, včetně procedurálního, objektově orientovaného a funkcionálního programování. Je dynamicky typovaný a využívá automatickou správu paměti (garbage collection). Díky své rozsáhlé a komplexní standardní knihovně je často popisován jako jazyk s "bateriemi v ceně" (batteries included).

Jeho název nepochází z hada, jak se mnozí domnívají, ale je odvozen od britské komediální skupiny Monty Python. Python je spravován neziskovou organizací Python Software Foundation (PSF).

📜 Historie

Vývoj Pythonu zahájil na konci 80. let Guido van Rossum v Centrum Wiskunde & Informatica (CWI) v Nizozemsku jako nástupce jazyka ABC, který byl schopen zpracovávat výjimky a komunikovat s operačním systémem Amoeba. Van Rossum je hlavním autorem Pythonu a jeho pokračující ústřední role při rozhodování o směřování jazyka mu vynesla titul "Benevolentní doživotní diktátor" (Benevolent Dictator for Life, BDFL). V červenci 2018 z této pozice odstoupil, aby se rozhodování o budoucnosti jazyka stalo více komunitním procesem řízeným radou.

  • Python 1.0 byl vydán v lednu 1994. Zahrnoval již základní nástroje funkcionálního programování jako `lambda`, `map`, `filter` a `reduce`.
  • Python 2.0, vydaný v říjnu 2000, přinesl mnoho nových funkcí, jako jsou list comprehension, plnou podporu pro Unicode a plnohodnotný garbage collector schopný detekovat cyklické reference.
  • Python 3.0, vydaný v prosinci 2008, byl velkou revizí jazyka, která není plně zpětně kompatibilní s verzí 2.x. Hlavním cílem bylo odstranit nadbytečné konstrukce a nekonzistence, což vedlo k čistší syntaxi. Například funkce `print` se stala funkcí, řetězce jsou ve výchozím stavu Unicode a došlo ke změnám v dělení čísel. Přechod komunity z Pythonu 2 na Python 3 byl pomalý, ale podpora pro Python 2 byla oficiálně ukončena 1. ledna 2020.

🧘 Filozofie

Základní filozofie jazyka je shrnuta v dokumentu "The Zen of Python" (PEP 20), který lze zobrazit v interaktivním interpretu příkazem `import this`. Mezi hlavní principy patří:

  • Krásné je lepší než ošklivé.
  • Explicitní je lepší než implicitní.
  • Jednoduché je lepší než složité.
  • Složité je lepší než komplikované.
  • Čitelnost se počítá.

Tato filozofie se promítá do syntaxe, která je navržena tak, aby byla co nejvíce podobná anglickému jazyku a matematické notaci, a aby byla vizuálně čistá díky použití odsazení pro definování bloků kódu.

⚙️ Syntaxe a sémantika

Python se od mnoha jiných programovacích jazyků odlišuje několika klíčovými vlastnostmi své syntaxe.

Odsazení

Na rozdíl od jazyků jako C nebo Java, které používají složené závorky (`{}`) k ohraničení bloků kódu, Python používá odsazení (tzv. off-side rule). Úroveň odsazení určuje, ke kterému bloku kód patří. To nutí programátory psát vizuálně strukturovaný a konzistentní kód.

Příklad bloku `if`:

if x > 5:
    print("x je větší než 5")
    y = x + 1
else:
    print("x není větší než 5")

Datové typy

Python je dynamicky typovaný, což znamená, že typ proměnné se určuje až za běhu programu a není nutné ho explicitně deklarovat. Mezi základní vestavěné datové typy patří:

  • Čísla: `int` (celá čísla), `float` (čísla s plovoucí desetinnou čárkou), `complex` (komplexní čísla).
  • Sekvence:
   *   `str` (řetězce), neměnné sekvence Unicode znaků.
   *   `list` (seznamy), měnitelné pole prvků různých typů.
   *   `tuple` (ntice), neměnitelné seznamy.
  • Mapování: `dict` (slovníky), kolekce párů klíč-hodnota.
  • Množiny: `set` (měnitelná množina unikátních prvků), `frozenset` (neměnitelná množina).
  • Booleovské hodnoty: `bool` (`True` a `False`).
  • Nic: `NoneType` (hodnota `None`), reprezentující absenci hodnoty.

Řídící struktury

Python poskytuje standardní řídící struktury:

  • `if`, `elif`, `else` pro podmíněné větvení.
  • `for` pro iteraci přes sekvence (např. seznamy, řetězce).
  • `while` pro cykly s podmínkou na začátku.
  • `break` a `continue` pro řízení běhu cyklů.
  • `try`, `except`, `finally` pro zpracování výjimek.

Funkce a objektově orientované programování

Funkce se definují pomocí klíčového slova `def`. Python podporuje objektově orientované programování (OOP) s třídami a dědičností. Třídy se definují pomocí klíčového slova `class`. Vše v Pythonu je objekt, včetně čísel, řetězců a funkcí.

Příklad jednoduché třídy:

class Pes:
    def __init__(self, jmeno):
        self.jmeno = jmeno

    def stekej(self):
        return f"{self.jmeno} říká: Haf!"

muj_pes = Pes("Alík")
print(muj_pes.stekej())  # Vypíše: Alík říká: Haf!

📚 Standardní knihovna

Jednou z největších předností Pythonu je jeho rozsáhlá standardní knihovna, která poskytuje moduly pro širokou škálu úloh. Tento přístup "baterií v ceně" znamená, že mnoho běžných problémů lze vyřešit bez nutnosti instalovat externí balíčky.

Mezi klíčové moduly patří:

  • `os` a `sys`: Rozhraní pro interakci s operačním systémem a interpretem.
  • `re`: Podpora pro regulární výrazy.
  • `math` a `cmath`: Matematické funkce pro reálná a komplexní čísla.
  • `datetime`: Práce s datem a časem.
  • `json`: Práce s datovým formátem JSON.
  • `sqlite3`: Rozhraní pro databázi SQLite.
  • `urllib` a `http`: Nástroje pro práci s webem a protokolem HTTP.
  • `unittest`: Framework pro automatizované testování.

🌐 Ekosystém a knihovny třetích stran

Kromě standardní knihovny existuje obrovský ekosystém balíčků třetích stran, které jsou spravovány pomocí nástroje `pip` a hostovány v repozitáři Python Package Index (PyPI). Tento ekosystém je klíčový pro popularitu Pythonu v mnoha oblastech.

Vědecké výpočty a datová věda

  • NumPy: Základní balíček pro numerické výpočty, poskytuje výkonná vícerozměrná pole.
  • Pandas: Knihovna pro analýzu a manipulaci s daty, nabízí datové struktury jako DataFrame.
  • SciPy: Knihovna pro vědecké a technické výpočty.
  • Matplotlib a Seaborn: Knihovny pro vizualizaci dat a tvorbu grafů.
  • Scikit-learn: Komplexní knihovna pro strojové učení.

Umělá inteligence a hluboké učení

  • TensorFlow: Open-source platforma pro strojové učení vyvinutá společností Google.
  • PyTorch: Open-source framework pro hluboké učení vyvinutý společností Meta AI.
  • Keras: Vysokoúrovňové API pro neuronové sítě, které může běžet nad TensorFlow nebo jinými frameworky.

Vývoj webových aplikací

  • Django: Vysokoúrovňový webový framework, který podporuje rychlý vývoj a čistý, pragmatický design.
  • Flask: Mikroframework, který poskytuje základní nástroje pro tvorbu webových aplikací s velkou flexibilitou.
  • FastAPI: Moderní, rychlý webový framework pro tvorbu API, založený na standardních typech Pythonu.

Další významné knihovny

🚀 Implementace

Jazyk Python je specifikace, která může mít více implementací.

💼 Použití v praxi

Díky své univerzálnosti a rozsáhlému ekosystému se Python používá v široké škále aplikací:

  • Vývoj webových aplikací (backend): Tvorba serverové části webů a služeb.
  • Datová analýza a vizualizace: Zpracování velkých datových sad, statistická analýza a tvorba grafů.
  • Strojové učení a umělá inteligence: Vývoj modelů pro predikci, rozpoznávání obrazu, zpracování přirozeného jazyka a další.
  • Automatizace a skriptování: Psaní skriptů pro automatizaci opakujících se úloh v systémové administraci, testování nebo jiných oblastech.
  • Vědecké a numerické výpočty: Použití v akademickém výzkumu, inženýrství a finančnictví.
  • Výuka programování: Díky své jednoduché syntaxi je často prvním jazykem, který se učí nováčci v programování.
  • Vývoj her: I když není dominantní, používá se pro prototypování a vývoj nezávislých her.

⚖️ Výhody a nevýhody

Výhody

  • Jednoduchost a čitelnost: Syntaxe je čistá a snadno pochopitelná, což zrychluje vývoj a usnadňuje údržbu.
  • Obrovský ekosystém: Velké množství knihoven a frameworků pro téměř jakýkoliv účel.
  • Velká komunita: Aktivní a podporující komunita, rozsáhlá dokumentace a mnoho online zdrojů.
  • Přenositelnost: Kód napsaný v Pythonu běží beze změny na mnoha platformách (Windows, macOS, Linux).
  • Univerzálnost: Vhodný pro širokou škálu úloh od webového vývoje po datovou vědu.

Nevýhody

  • Rychlost: Jako interpretovaný jazyk je Python obecně pomalejší než kompilované jazyky jako C++ nebo Rust. Pro výpočetně náročné úlohy se často používají knihovny napsané v C nebo Fortranu.
  • Global Interpreter Lock (GIL): V CPythonu omezuje GIL běh více vláken najednou, což brání plnému využití vícejádrových procesorů pro paralelní úlohy vázané na CPU. Pro paralelismus se často používají víceprocesové přístupy.
  • Vysoká spotřeba paměti: Flexibilita dynamického typování a správa objektů může vést k vyšší spotřebě paměti ve srovnání se staticky typovanými jazyky.
  • Není ideální pro mobilní vývoj: I když existují frameworky jako Kivy, Python není primární volbou pro nativní vývoj mobilních aplikací pro Android a iOS.

🧑‍🏫 Pro laiky

Představte si, že chcete upéct dort. Můžete si vzít velmi podrobnou knihu receptů pro profesionální cukráře (to by byl jazyk jako C++), která popisuje každý chemický proces, ale je složitá na čtení. Nebo si můžete vzít jednoduchý, srozumitelný recept napsaný v běžné řeči (to je Python).

  • Jednoduché příkazy: Místo složitých kódů píšete příkazy, které se podobají angličtině, například `print("Ahoj světe")`.
  • Odsazení místo závorek: Aby bylo v receptu jasno, co patří k jakému kroku, jednotlivé pod-kroky se odsadí. Python to dělá stejně – místo složitých závorek používá odsazení, takže kód je vždy přehledný.
  • "Baterie v ceně": Když si koupíte hračku, je skvělé, když už má v sobě baterie. Python má v sobě spoustu hotových "nástrojů" (knihoven) pro běžné úkoly. Chcete pracovat s daty z internetu? Je na to nástroj. Chcete provádět matematické výpočty? Je na to nástroj. Nemusíte všechno vymýšlet od nuly.
  • Interpretovaný jazyk: Místo toho, abyste celý recept přeložili do jazyka, kterému rozumí jen trouba (kompilace), máte kuchaře (interpret), který čte váš recept řádek po řádku a hned ho vykonává. Je to trochu pomalejší, ale mnohem snazší na opravu chyb, protože hned vidíte, kde jste udělali chybu.

Díky této jednoduchosti a obrovskému množství hotových nástrojů se Python stal populárním nejen mezi profesionály, ale i mezi vědci, analytiky a začátečníky, kteří se chtějí naučit programovat.


Šablona:Aktualizováno