Python

Z Wikiverzity
Přejít na: navigace, hledání

Python je skriptovací jazyk. Existuje v něm např. knihovna pro psaní botů (viz Pywikibot).

Info[editovat]

Ú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]

Související stránky[editovat]

Databáze[editovat]

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

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]

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č)