Python
Python je skriptovací jazyk. Existuje v něm např. knihovna pro psaní botů (viz Pywikibot).
Info
[editovat]- d: Q28865
- w: Python
- en: Python
- de: Kurs:Python
- b:en: Python Programming – This book describes primarily version 2, but does at times reference changes in version 3.
- b:de: Python unter Linux – pouze Python 2
Úvod
[editovat]Python je programovací jazyk, do jisté míry podobný jazyku Perl. Jeho autorem je Guido van Rossum. Dlouhou dobu, když již v něm bylo napsáno množství různých skriptů, stále nebyla vydána učebnice tohoto jazyka s odůvodněním, že naučit se programovat v Pythonu je tak snadné, že k němu ani žádná učebnice není zapotřebí. V současné době je možné najít na Internetu množství učebního materiálu a v knihkupectvích zakoupit řadu učebnic i v češtině. Tento kurs na Wikiverzitě je nechce nahrazovat, ale má sloužit pouze k prvnímu seznámení s jazykem na té úrovni, aby jej bylo možno využít např. ke spuštění bota.
Podstránky
[editovat]- /modul
- /Dive Into – tutoriál postupující dle knihy Marka Pilgrima Dive Into Python 3 čili Ponořme se do Pythonu 3
- /db – databáze
- /audio – všechno ohledně zvuku v jazyce Python
- /skript – ukázkové skripty
- /perl-python – konverze programů
Vade mecum
[editovat]Verze
[editovat]Je nutno zásadně odlišovat verze:
- 2.x
- 3.x
protože verze 3.x představuje zásadní přepracování a není zpětně kompatibilní, skripty psané pro verzi 2.x proto s největší pravděpodobností nebudou pod verzí 3.x fungovat. Pokrok verze 3.x spočívá m.j. v důsledné podpoře kódování utf-8 a tím pádem jde o přepracování vnitřní struktury zpracování řetězců atd.
Instalace
[editovat]- Balíky APT :
- python
- python3
Interaktivní prostředí
[editovat]Z příkazové řádky:
python
spustíme interpret, ozve se promptem >>>.
Metodou "pokus a omyl" zkoušíme (s větším či měnším úspěchem) psát na řádek různá čísla, matematické výrazy, stringy. Zadaný výraz ukončíme klávesou Enter a sledujeme odpověď. Např:
>>> 1+1 2 >>> 2*4+6 14 >>> 5^5 0 >>> 5**5 3125 >>> Nazdar! File "<stdin>", line 1 Nazdar! ^ SyntaxError: invalid syntax >>> "Nazdar!" 'Nazdar!' >>> 'Nazdar!' 'Nazdar!'>>> 'Nazdar!'+'Jak se máš?' 'Nazdar!Jak se m\xc3\xa1\xc5\xa1?' >>> a=5 >>> b=8 >>> a+b 13>>> otazka1='Jak se máš?' >>> odpoved1='Kráásně!' >>> otazka1+odpoved1 'Jak se m\xc3\xa1\xc5\xa1?Kr\xc3\xa1\xc3\xa1sn\xc4\x9b!'
Interpret se chová většinou dle našeho očekávání. Měli jsme ho spuštěný na konsoli s utf-8 s locale LANG=cs_CZ.UTF-8, ale jakoby to nepoznal. Možná bude čas nahlédnout do učebnice: 3.1.3 Řetězce Unicode a budeme experimentovat dál:
>>> u'Krááásně' u'Kr\xe1\xe1\xe1sn\u011b'
Nakonec se dočteme cosi o implicitním kódování:
... kódování.3.7 Nastavuje se v souboru site.py umístěném v hlavním adresáři běhového prostředí (např. /usr/local/lib). Jeho jméno lze zjistit pomocí funkce sys.getdefaultencoding() a ještě lépe na http://python.wraith.cz/tech-encoding-python.php, že je to vlastně v pořádku. Pouhé uvedení názvu proměnné nám ji totiž vypíše jako tzv. reprezentační řetězec, tj. posloupnost bytes. Takže víme, co v té proměnné máme skutečně uloženo. Chceme-li si pak vypsat text v lidské podobě, musíme použít funkci print():
print(otazka1+odpoved1) Jak se máš?Kráásně!
Python 3
[editovat]Výše uvedené příklady takhle fungují ve verzích 2.x; ve verzi 3.x je už práce s utf-8 jednodušší:
>>> u'Krááásně' 'Krááásně' >>> 'Nazdar!'+'Jak se máš?' 'Nazdar!Jak se máš?'
Rozdíly oproti Perlu, C a podobných jazyků
[editovat]Ze začátku si musíme dát pozor na některé neobvyklosti jazyka Python:
- Pro oddělování příkazů se nepíše na konci středník. Namísto toho se příkazy píší na samostatné řádky bez středníků. Znak konce řádky je tedy významnou součástí programu!
- Svůj velký význam má i intendace programu, tj. jeho způsob jeho odsazení od levého okraje stránky! T(m, jak řádky odsazujeme, tak vytváříme boky programu! Tedy žádné složené závorky apod. Podle konvence se odsazuje čtyřmi mezerami, nikoli tabelátorem.
- Tam, kde si Perl vystačí s jedním datovým typem seznamu, má Python datové typy list a tuple. tuple se od seznamu liší tím, že se jeho prvky nedají modifikovat. Nutnost zavedení takového typu pak nejde některým programátorům na rozum. (to pak nejsou programatori, tuple je nemenitelna sekvence a jako nemenitelny datovy typ lze pouzit napriklad pro indexovani slovniku a zkuste v jinem jazyku hash pole indexovat nejakym indexovanym polem)
- Vedle typu string, což je řetězec bytů, máme ještě řetězec typu unicode, což je řetězec v kódování Unicode. Rovněž tyto dva typy jsou neměnitelné.
- Asociativnímu poli (tj. tabulce hashů) se tu říká dict (jakožto dictionary neboli slovník).
- Kromě pochopitelných datových typů jako bool (tj. Boolean s hodnotami True a False) a complex (komplexní číslo) jsou tu i typy méně pochopitelné, jako třeba NoneType, což je speciální typ s jedinou možnou hodnotou None.
Zajímavé funkce
[editovat]Ještě si v interaktivním módu můžeme vyzkoušet takové funkce jako třeba:
>>> range (10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range (5,10) [5, 6, 7, 8, 9] >>> range (5,10,2) [5, 7, 9]
což nám později pomůže třeba při vytváření cyklů for.
Programujeme
[editovat]První program
[editovat]Opustníme interaktivní mód kombinací kláves Ctrl-D (konec souboru) a to, co jsme si dosud vyzkoušeli, si teď můžeme napsat do souboru. Jako extenzi uvedeme .py. Na začátku souboru napíšeme rádek:
#! /usr/bin/env python
(příkaz env spouští interpret v daném prostředí proměnných), takže náš první program může vypadat třebas takto:
#! /usr/bin/env python
print "Ahojtě lidičky!\n"
Souboru přidáme příznak proveditelnosti, např:
chmod u+x mujprogram.py
a pak jej již pohodlně spustíme z příkazové řádky:
./mujprogram.py
Program dle očekávání vypíše hlášku a navíc nám lehce vynadá:
sys:1: DeprecationWarning: Non-ASCII character '\xc4' in file ./mujprogram.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
To proto, že jsme v programu použili jiný znak než ASCII bez deklarace. Hned to dle [1] napravíme:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
print "Ahojtě lidičky!\n"
První program máme za sebou a zbytek už je legrace :-)
Spuštění skriptu z interpretru
[editovat]>>> exec(open("./filename").read())
Anebo spustíme daný skript s přepínačem -i, což způsobí, že po provedení skriptu zůstane interpret otevřený:
$ python3 -i mujskript.py
Související stránky
[editovat]Databáze
[editovat]Web
[editovat]- Webhosting#Python – webové servery podporující Python
Uživatelské projekty na Wikiverzitě
[editovat]Projekty modulů
[editovat]Odkazy na projekty Wikimedia
[editovat]- en:Python - velice kratičký úvodní článeček
- w:Python - pro první seznámení dobré přečíst
- b:en:Python - podrobná wikiučebnice (v angličtině), dostupná i jako PDF
Externí odkazy
[editovat]- Anglicky:
- www.python.org – Oficiální domovská stránka projektu
- Evan Jones (2005-10-01): How to Use UTF-8 with Python
- Mark Summerfield (2010): Programming in Python 3 : a complete introduction to to the Python Language Second Edition, PDF, 636 stran
- Česky:
- www.py.cz – PyCZ, komunitní český web
- www.py.cz/TutorialyLiteratura - seznam množství tutoriálů a literatury
- py.cz/UcebniceJazykaPython - původní tutorial pro verzi 2.2 přeložil Jan Švec
- Jan Švec: Seriál Létající cirkus - 21-dílný seriál na serveru root.cz (rok 2002), ke stažení i v PDF
- www.py.cz/TutorialyLiteratura - seznam množství tutoriálů a literatury
- Jeffrey Elkner et. al: Učíme se programovat v jazyce Python 3, přel. Jaroslav Kubias
- http://python.wraith.cz/ – dobře udržované stránky o Pythonu, autorem je Petr Mach.
- "Ponořme se do Python(u) 3", Mark Pilgrim – tištěná kniha, kterou možno stáhnout v PDF
- Ponořme se do Pythonu 3 – HTML verze
- Tutoriál Buwralug pro Python 3.0
- www.py.cz – PyCZ, komunitní český web
- Python Projects:
Knihy
[editovat]Užitečné knihy o Pythonu v české jazyce.
- Python 3: Výukový kurz od Marka Summerfielda (český překlad za cenu okolo 500 kč) - Kniha je spíše pro ty, kteří jsou již sznámení s jiným programoovacím jazykem a progrmováním jako takovím.
- Ponořme se do Python(u) 3 od Marka Pilgrima (český překlad se dá koupit od 300 korun nebo stáhnout zdarma na stránkách nic.cz) - Kniha je více pro začátečníky.