Python: Porovnání verzí

Řádek 89: Řádek 89:
  
 
===CPython===
 
===CPython===
[[CPython]] je referenční implementace interpretu programovacího jazyka Pythonu. Je napsaná v jazyce C a v Phytonu. Interpret, který spouštíme příkazem python3. Je rychlý, stabilní a poskytuje širokou skupinu volitelných rozšíření. CPython je vyvíjen jako open-source projekt. Řízen je [[PSF]] a je dostupný pod svobodnou licencí. <ref name=":cpython">FALTÝNEK, Lukáš. Python není krajta.  Linux EXPRES [online]. 2007 [cit. 2020-10-13]. Dostupné z: https://www.linuxexpres.cz/praxe/python-neni-krajta</ref>
+
[[CPython]] je referenční implementace interpretu programovacího jazyka Pythonu. Je napsaná v jazyce C a v Phytonu. Interpret, který spouštíme příkazem python3. Je rychlý, stabilní a poskytuje širokou skupinu volitelných rozšíření. CPython je vyvíjen jako [[Open source|open-source]] projekt. Řízen je [[PSF]] a je dostupný pod svobodnou licencí. <ref name=":cpython">FALTÝNEK, Lukáš. Python není krajta.  Linux EXPRES [online]. 2007 [cit. 2020-10-13]. Dostupné z: https://www.linuxexpres.cz/praxe/python-neni-krajta</ref>
  
 
===Cython===
 
===Cython===
 
[[Cython]] je C rozšíření jazyka Python a transkompiler. Cython překládá zdrojový Python kód do C kódu, který se následně standardním překladačem překládá do binárního kódu. Výsledkem je tedy nativní program stejně jako u RPythonu.
 
[[Cython]] je C rozšíření jazyka Python a transkompiler. Cython překládá zdrojový Python kód do C kódu, který se následně standardním překladačem překládá do binárního kódu. Výsledkem je tedy nativní program stejně jako u RPythonu.
  
Výhody Cythonu
+
'''Výhody Cythonu'''
 
*Práce s externími knihovnami C může být rychlejší (umožní mluvit přímo se základními knihovnami, aniž by tomu bránil Python)
 
*Práce s externími knihovnami C může být rychlejší (umožní mluvit přímo se základními knihovnami, aniž by tomu bránil Python)
 
*Umožňuje použít správu paměti C i Python
 
*Umožňuje použít správu paměti C i Python

Verze z 15. 10. 2020, 09:45

Stránka ve výstavbě
Inkwell icon - Noun Project 2512.svg Na této stránce se právě pracuje. Prosím needitujte tuto stránku, dokud na ní zůstává tato šablona. Předejdete tak editačnímu konfliktu. Jestliže uběhla od poslední editace doba alespoň dvou dnů, neváhejte tuto šablonu odstranit. Inkwell icon - Noun Project 2512.svg

Charakteristika

Je to vysokoúrovňový skriptovací programovací jazyk, který v roce 1991 navrhl Guido van Rossum. Nyní patří k jedním z nejpopulárnějších jazyků. Používá efektivní vysokoúrovňové datové typy, přičemž jednoduše a elegantně řeší otázku objektově orientovaného programování. Jeho syntaxe a dynamické typy spolu s interpretováním kódu dotváří pověst ideálního nástroje pro psaní skriptů a rychlý vývoj aplikací ( Rapid Application Development,RAD). Samotný interpretr jazyka je spustitelný na velkém množství platforem včetně Linuxu, Windows, MacOS a DOS. Zdrojové kódy interpretru Pythonu a standardních knihoven jsou volně ke stažení z domovské stránky Pythonu a je možné je dále volně modifikovat a distribuovat.

Python je hybridní jazyk (nebo také víceparadigmatický), to znamená, že umožňuje při psaní programů používat nejen objektově orientované paradigma, ale i procedurální a v omezené míře i funkcionální, podle toho, komu co vyhovuje nebo se pro danou úlohu hodí nejlépe. Python má díky tomu vynikající vyjadřovací schopnosti. Kód programu je ve srovnání s jinými jazyky krátký a dobře čitelný.[1] Jeho nevýhodou je, že obsahuje nedokumentované metody a lokální proměnné, které mohou být zneužity pro spuštění příkazu v operačním systému.

Prostředí jazyka je snadno rozšiřitelné pomocí funkcí a datových typů napsaných v jazycích C nebo C++. Python lze také použít jako skriptovací jazyk pro aplikace v jiných jazycích. [2]

Programy v Pythonu jsou velice kompaktní a snadno pochopitelné. Zároveň jsou typicky mnohem kratší než ekvivalentní kód implementovaný v C nebo C++a to z mnoha důvod:

  • vysokoúrovňové datové typy umožňující rychlé a komplexní operace v jediném výrazu;
  • seskupování výrazů se děje pomocí odsazení narozdíl od používání otevírací a uzavírací složené závorky v C a C++;
  • není nutné deklarovat proměnné a argumenty funkcí, jazyk dokonce nerozlišuje ani jejich typ [2]

Historie

Python byl vytvořen v roce 1990-1991 Guido van Rossumem v Matematickém centru Stitching v Nizozemsku jako následník jazyka nazývaného ABC. Jméno Python pochází z Monty Python's Flying Circus. Tvůrci tohoto zábavného pořadu tvrdí, že nemá žádný význam a jim akorát připadalo zábavné. Nemá oficiální logo, přestože na mnoha webech se objevuje had (přesněji krajta), což je jeden z anglických významů slova Python. Přesto oba tvůrci souvislosti s hady odmítají. Python jazyk se vyvíjí a postupem času vznikly tři nekompatibilní major verze. Verze Python 1, která byla vydána v roce 1991 a jejíž poslední aktualizace proběhla v roce 2000. Nyní se tedy již nepoužívá. Další verze Python 2, která byla vydána v roce 2000 a jejíž poslední verze byla vydána v roce 2020. Python 3, verze 3.0 byla vydána v roce 2008 a je nyní aktuální řadou.

Kdo jej používá

  • Seznam – freemail
  • Google
  • Industrial Light & Magic – StarWars II a další…

Využití

  • grafika
  • audio
  • networking
  • hry
  • vědecké výpočty
  • webové programování
  • scriptování
  • administrace [3]

Syntaxe

Syntaxi Pythonu lze považovat za jednoduchou na pochopení, díky čemuž pak lze dosahovat při psaní programů vysoké efektivity a rychlosti. Zároveň tato syntaxe nutí k psaní pečlivě strukturovaného kódu, což se ve výsledku pozitivně odráží jak na jeho přehlednosti, tak na čitelnosti a celkové eleganci hotových programů. Syntaxe Pythonu bývá obvykle velice úsporná. Jedná se o tzv. „case sensitive“synatxi, jež rozlišuje malá a velká písmena. Python eliminuje používání závorek na nezbytné minimum. Příkazy jsoudojednoho bloku seskupeny na základě shodného odsazení, tzn. shodného počtu mezerči tabulátorů tyto přitom není možné kombinovat. Příkaz, za kterým následuje vnořený blok, je pak obvykle uvozen dvojtečkou. [4]

Z významných grafických rozhraních je v Pythonu možno použít Tkinter, wxPython, PyGTK, PyQt. Tkinter je tenká pythonovská vrstva postavená nad grafickou knihovnou Tk/Tcl. WxPython je multiplatformní GUI toolkit založený na C++ frameworku wxWidgets, který pro vykreslování využívá obvyklé součásti hostitelského systému. PyGTK, jak název evokuje, používá grafickou knihovnu GTK a PyQT pak knihovnu QT. Pro vývoj her pak lze jako grafické rozhraní doporučit PyGame. PyGame je napsáno nad výbornou knihovnou SDL. [5]

Příklady

Příklad ukázky programu Hallo World:

print ("Hello, World!") # ve verzích 2.x print "Hello, World!"

Příklad pro výpočet faktoriálu:

def factorial(x):

       if x <= 0:
          return 1
       else:
          return x * factorial(x - 1)

def factorial_kratsi(x):

   return 1 if x <= 0 else x * factorial_kratsi(x - 1)


Uložení hodnoty do proměnné, tisk hodnoty proměnné:

  i = 3
  print(i)
  print(i*i + 2)
  print(10**i) # umocňování: 10 na i


  # zmenšení hodnoty proměnné o 1 a její tisk
  print("Hodnota proměnné i = 3 zmenšena o jednu:")
  i = i - 1
  print(i)


  # tisk prázdného řádku
  print()

Proměnné

Python je dynamicky typovaný programovací jazyk. To znamená, že v programu nemusíme uvádět typ proměnné, interpret jazyka jej určí automaticky. Promněnná je jméno, které odkazuje na nějakou hodnotu. Hodnota proměnné se může měnit.

Názvy proměnných: mohou obsahovat písmena, čísla a znak podtržítko. Nesmí obsahovat mezeru a nesmí začínat na číslo. Rozlišují se malá a velká písmena. V Pythonu je zvykem psát jména proměnných malými písmeny.

Vytvoření a aktualizace proměnné: vytvoříme tak, že do ní přiřadíme hodnotu. Hodnotu můžeme následně aktualizovat. Proměnná drží poslední hodnotu, která do ní byla přiřazena. Pro přiřazení používáme rovnítko:

x = 20 # vytvoření proměnné x a přiřazení hodnoty 20

y = 5 # vytvoření proměnné y a přiřazení hodnoty 5

x = 10 # změna hodnoty x na 10

print(x, y) # vypíše 10 5

Aritmetické operace: s čísly můžeme provádět základní aritmetické operace, zápis je stejný jako na běžných kalkulačkách (+, -, /, *). Python také nabízí podporu pro operace celočíselné dělení (//), dělení se zbytkem (%) a umocňování (**) – tyto operace se při programování často hodí. [6]

Implementace Pythonu

Brython

Brython je transpřekladač z Pythonu do JavaScriptu, přičemž samotný překlad (resp. přesněji řečeno transpřeklad) probíhá na pozadí, což znamená, že přímo v kódu webové stránky je umístěn (či načítán) kód v Pythonu. Výhodou Brythonu je, že se jakékoli úpravy ihned projeví v aplikaci po znovunačtení stránky (F5). [7]

CPython

CPython je referenční implementace interpretu programovacího jazyka Pythonu. Je napsaná v jazyce C a v Phytonu. Interpret, který spouštíme příkazem python3. Je rychlý, stabilní a poskytuje širokou skupinu volitelných rozšíření. CPython je vyvíjen jako open-source projekt. Řízen je PSF a je dostupný pod svobodnou licencí. [5]

Cython

Cython je C rozšíření jazyka Python a transkompiler. Cython překládá zdrojový Python kód do C kódu, který se následně standardním překladačem překládá do binárního kódu. Výsledkem je tedy nativní program stejně jako u RPythonu.

Výhody Cythonu

IronPython

IronPython je implementace Pythonu běžící na .NET (Mono) platformě. Lze jej přímo využívat ve všech jazycích platformy .NET. Tvůrcem IronPythonu je Jim Hugunin. První verze byla vydána v roce 2006. Ironpythonu nepodporuje virtuální prostředí. Implementace IronPython je vyvíjena firmou Microsoft.

Jython

Jython je implementace skriptovacího jazyka Python, napsaná v 100% čisté Javě , která je použitelná v prostředí libovolného virtuálního stroje JVM (Java Virtual Machine). V prostředí Jythonu můžete psát programy, které mohou jednoduše komunikovat s kódem napsaným v Javě.

Syntaxe Jythonu se velmi podobá způsobu, jakým se zapisují kousky kódu, když chcete někomu sdělit určitou myšlenku, či postup. Jython používá zarovnání pro vyjádření jednotlivých úseků kódu, což vede k jeho čitelnosti. Způsob zápisu programu není tedy věcí programátorského stylu autora, ale věcí syntaxe. V Jythonu je možné jednotlivé programy organizovat do malých modulů, které lze znovu využít i v jiných modulech. Tyto moduly mohou obsahovat jak vlastní programy, tak pouze informace používané k vlastní organizaci modulů do různých knihoven.

Jython je objektově orientovaný nástroj. Umožňuje vám psát programy s využitím objektově orientovaného přístupu, ale nenutí vás k tomu. V Jythonu lze použít i styly vlastní funkcionálnímu programování (jako například v Lispu,...). Třídy, instance, moduly a funkce využívají týž jednoduchý koncept jmenných prostorů a mapování mezi názvy proměnných a jejich hodnota

Na rozdíl od Javy, není nutné zdrojový kód explicitně kompilovat, aby byl spustitelný. To zvyšuje programátorskou efektivitu. [8]

PyPy

PyPy je alternativní implementace Pythonu napsaná v RPythonu. PyPy se pyšní 6x větší rychlostí kódu než standardní Python interpety. Své rychlosti dosahuje díky použití JIT (Just In Time) kompilátoru.

RPython

RPython získal své jméno ze sousloví „Restricted Python“. Není interpretován, ale skutečně překládán do objektového kódu a z výsledku se vytváří spustitelná aplikace. Celý proces zpracování je poměrně komplikovaný a zdlouhavý. Typicky používá pro psaní interpretrů dalších programovacích jazyků. [9] RPython je určen pro překlad programů napsaných v podmnožině programovacího jazyka Python do nativního kódu, ať již se jedná o přímo spustitelný kód či o dynamicky linkovanou knihovnu (.so, .dll). [10]

RustPython

RustPython je implementace Pythonu 3 v jazyce Rust. Tato implementace je označena jako vývojová a nevhodná pro produktivní nasazení. Implementuje CPython 3.5.

http://howto.py.cz/cap02.htm

Zdroje

Reference

  1. Jazyk Python. Gymnázium Milevsko [online]. [cit. 2020-10-15]. Dostupné z: http://macek.sandbox.cz/texty/python-tutorial-cz/python-tutorial-cz-a4-2.2.pdf.
  2. 2,0 2,1 ŠVEC, Jan. Učebnice jazyka Python (aneb Létající cirkus). [online]. 2002 [cit. 2020-10-13]. Dostupné z: http://macek.sandbox.cz/texty/python-tutorial-cz/python-tutorial-cz-a4-2.2.pdf.
  3. KOSINA, Pavel. Python - popis jazyka. [online]. 2005 [cit. 2020-10-13]. Dostupné z: http://programujte.com/clanek/1970010106-python-popis-jazyka/
  4. KOTEK, Lukáš. Výuka algoritmizace a programování se zaměřením na programovací jazyk Python [Algorithms and Programming Education with a focus on the programming languagePython]. Praha, 2012. 128 s. Diplomová práce. Univerzita Karlova v Praze, Pedagogická fakulta, Katedra informačních technologií a technické a informační výchovy. Vedoucí diplomové práce Ing. Jaroslav Novák, Ph.D.
  5. 5,0 5,1 FALTÝNEK, Lukáš. Python není krajta. Linux EXPRES [online]. 2007 [cit. 2020-10-13]. Dostupné z: https://www.linuxexpres.cz/praxe/python-neni-krajta
  6. Proměnné a číselné výrazy v Pythonu. Umíme programovat [online]. [cit. 2020-10-14]. Dostupné z: https://www.umimeprogramovat.cz/programovani-promenne-a-ciselne-vyrazy
  7. TIŠNOVSKÝ, Pavel. Brython aneb použití jazyka Python ve skriptech přímo v prohlížeči. Root.cz [online]. 2019 [cit. 2020-10-13]. Dostupné z: https://www.root.cz/clanky/brython-aneb-pouziti-jazyka-python-ve-skriptech-primo-v-prohlizeci/#k07
  8. HAVLÍČEK, Štefan. Jython I: Seznamte se ..... Java portál [online]. 2008 [cit. 2020-10-14]. Dostupné z: http://www.java.cz/article/8312
  9. TIŠNOVSKÝ, Pavel. RPython: překvapivě výkonný dialekt Pythonu, na němž je založen PyPy. Root.cz [online]. 2018 [cit. 2020-10-14]. Dostupné z: https://www.root.cz/clanky/rpython-prekvapive-vykonny-dialekt-pythonu-na-nemz-je-zalozen-pypy/
  10. TIŠNOVSKÝ, Pavel. RPython vs Cython aneb dvojí přístup k překladu Pythonu do nativního kódu. Root.cz [online]. 2018 [cit. 2020-10-14]. Dostupné z: https://www.root.cz/clanky/rpython-vs-cython-aneb-dvoji-pristup-k-prekladu-pythonu-do-nativniho-kodu/#k10

Doporučená literatura

  • Seitz, Justin. Black hat Python: Python programming for hackers and pentesters [online]. San Francisco, California: No Starch Press, 2015, ©2015 [cit. 2020-10-13]. ISBN 978-1-59327-655-3. Dostupné z: http://ebookcentral.proquest.com/lib/natl-ebooks/detail.action?docID=1931622.
  • Galea, Alex. Beginning data analysis with python and Jupyter: use powerful industry-standard tools to unlock new, actionable insight from your existing data [online]. Birmingham: Packt Publishing, [2018], ©2018 [cit. 2020-10-13]. ISBN 978-1-78953-465-8. Dostupné z: https://ebookcentral.proquest.com/lib/natl-ebooks/detail.action?docID=5419744.
  • Coelho, Luis Pedro. Building machine learning systems with Python: get more from your data through creating practical machine learning systems with Python [online]. Second edition. Birmingham, England: Packt Publishing, 2015, ©2015. Community Experience Distilled [cit. 2020-10-13]. ISBN 978-1-78439-288-8. Dostupné z: http://ebookcentral.proquest.com/lib/natl-ebooks/detail.action?docID=2000929.
  • Chollet, François. Deep learning v jazyku Python: knihovny Keras, Tensorflow. Překlad Rudolf Pecinovský. První vydání. Praha: Grada Publishing, 2019. 328 stran. Knihovna programátora. Myslíme v. ISBN 978-80-247-3100-1.
  • Karkera, Kiran R. Building probabilistic graphical models with Python: solve machine learning problems using probabilistic graphical models implemented in Python with real-world applications [online]. Birmingham, [England]: Packt Publishing, 2014, ©2014. Community Experience Distilled [cit. 2020-10-13]. ISBN 978-1-78328-901-1. Dostupné z: https://ebookcentral.proquest.com/lib/natl-ebooks/detail.action?docID=1688634.

Související články

Počítač
Software
PHP
NodeXL: Programovací jazyky Ruby a C++ očima Twitter diskuzí
Programovací jazyk

Klíčová slova

Phyton, programovací jazyk, programování, počítač