Pythonýrská příručka Alfa

(na základech Python 2.5 Quick Reference vytvořil Pavel Kosina)


Výběr stylu: Moderní, Tisk, Vysoký kontrast

Úvod

Držíte v rukách krátkou, pohotovou příručku, která upřednostňuje stručnost nad absolutní přesností a úplností. Nezabíhá tedy do všech podrobností a nejsou uvedeny ani všechny dostupné funkce nebo argumenty.

únor 2008,
Python 2.5. Originál.Aktualizace. Vejde se na 70% na 3 listy oboustranně.
červen 2005,
Mírné gramatické opravy a doplnění (nejvíce u file()). Pořád se na 60% vejde na 4 stránky (2 listy oboustranně).
březen 2005,
Python 2.3. Na základech Python 2.3 Quick Reference vytvořil Pavel Kosina
Chyby, nepřesnosti a náměty zasílejte na geon zavináč post tečka cz.

Hranaté závorky v textu mají dvojí smysl.
  1. U slovníků, seznamů jako indexace, krájení, např. a[3] == 3
  2. U příkazů značí nepovinnou část příkazu, např. import modul [as jmeno]

Python na webu

Obsah

Spouštění Pythona

V adresáři Pythona leží dva spouštěcí soubory: python.exe a pythonw.exe.

Argumenty spouštění:

python[w] [mujprogram.py] [argumenty]
Příklady argumentů
Argument Co dělá
-h vytiskne nápovědu argumentů a skončí
-i Po dokončení programu python neskončí, nezavře se černé okno,ale zůstává čekat na naše další příkazy, které mohou navazovat na program. Jinými slovy - máme dostupné všechny proměnné i funkce z programu.
mujprogram Jméno programu/scriptu.
argumenty argumenty mého programu. Jsou předány do programu v sys.argv[1:]

Klíčová slova

and, as, assert, break, class, continue, def, del, elif, else, 
except, exec, finally, for, from, global, if, import, in, is,
lambda, not, or, pass, print, raise, return, try, while, with, yield

Základní typy a pojmy

Proměnné


Řetězce


Příklady
"retezec uvnitr dvojitych uvozovek", 'retezec uvnitr jednoduchych uvozovek'
"""retezec uvnitr trojitych uvozovek
muze obsahovat Enter i "neco v uvozovkach" """
čeština v řetězcích: unicode řetězce: u"český řetězec uvnitř dvojitých uvozovek s předsazeným u "
Pro správné fungování češtiny v řetězcích je nutné:
  1. deklarovat kódování na 1. řádce programu (třebas # -*- coding: utf8 -*- ),
  2. uložit v tom samém kódování.
  3. před všechny české řetězce dát 'u'.
surový řetězec:r"c:\python25\python.exe" -  používá se u windowsovských cest, které obsahují "\"
Také se může použít "c:\\python25\\python.exe" nebo dokonce "c:/python25/python.exe"

Boolean konstanty

Čísla

Posloupnosti

Slovníky

Množiny

Iterátor

Základní operace

Číselné typy (Desetinná a celá čísla)

Operace platné pro všechny typy čísel

Operace Výsledek
x+ y součet x a y
x - y rozdíl x a y
x* y součin x a y
x/ y podíl x a y.
5/3=1
5.0/3 = 1.66666
float(5)/3=1.6666
x % y zbytek po dělení čísel x a y : 5%3=2 (jako doplněk předchozího)
x** y mocnina: x na y
abs(x) absolutní hodnota x
int(x) převod x na celé číslo
float(x) převod x na desetinné číslo

Bitově orientované operace nad celými čísly

Operace Výsledek
~x invertované bity
x^ y bitové exkluzivní nebo nad x a y
x& y bitový součin x a y
x|y bitové nebo x a y
x<<n xposunuto doleva o n bitů
x>>n x posunuto doprava o n bitů

Komplexní čísla


Operace nad všemi posloupnostmi (řetězce, seznamy, n-tice)


Operace Výsledek Poznámky
s+t spojení s a t
s*n, n*s n kopií s
s[i] i-tý prvek s, začíná se na 0 když je i záporné, počítá se od konce.
  • 1. prvek má index 0
  • poslední počet prvků-1 nebo jen -1.
s[i:j]
s[i:j:krok]
Ukrojení s od i (včetně) do j (vyjma).
Nepovinně krok, možno i záporná hodnota (předvoleno: 1).
Výsledkem bude podposloupnost.
Krájení posloupností [zacina-na-indexu:je-mensi-nez-index[ : krok]].
Příklad:
a = (0,1,2,3,4,5,6,7)
a[3] == 3
a[-1] == 7
a[2:4] == (2,3)
a[1:] == (1,2,3,4,5,6,7)
a[:3] == (0,1,2)
a[::2] == (0,2,4,6) # lichá čísla
a[::-1] = (7,6,5,4,3,2,1,0) # obrácené pořadí

len(s) délka s (počet prvků)
min(s) nejmenší prvek z s
max(s) největší prvek z s
x ins Pravda, když x je rovno nějakému prvku z s, jinak Nepravda použití:
if prvek in s:
    print prvek, u"je obsaženo v s"

xnot in s Opak předchozího
reversed(s) [2.4] Vrací iterátor posloupnosti s v obráceném pořadí.

sorted(s) [2.4] vrací seřazenou posloupnost s


Operace nad řetězci (typ str )


Operace Výsledek
s.count(sub[,start[,end]]) Vrací počet výskytů podřetězce sub v řetězci s. Nepovinný argument start určuje, odkud se má začít prohledávat. Podobně i end.
s.find(sub[,start[,end]]) Vrací první index ze s, kde je nalezen podřetězec sub. Vrací -1, když není nalezen.
s.index(sub[,start[,end]]) Jako find(), ale vrací chybu, když sub není nalezen.
separator.join(seq) Vrací spojené řetězce ze seznamu seq,oddělené oddělovačem separator.
např.: ", ".join(['A', 'B', 'C']) -> "A, B, C"
s.lower() Vrací řetězec převedený na malá písmena.
s.partition(oddelovac) Vyhledá oddělovač oddelovac v a vrátí n-tici (head, sep, tail)
s.replace(old, new[, maxCount=-1]) Vrací kopii s, kde budou všechny podřetězce old nahrazeny podřetězcem new. Možno zadat maximální počet nahrazeni maxCount.
s.split([separator[, maxsplit]]) Vrací seznam slov v řetězci s, jako oddělovače slov se použije separator. Možno omezit počet dělení pomocí maxsplit.
s.strip([znaky]) Vrací kopii řetězce s, kde budou odstraněny ze začátku a konce znaky. Standardně jsou to tzv. bílá místa, tedy netisknutelné znaky jako mezera, tabulátor, enter,...
s.swapcase() Vrací řetězec, kde místo malých budou velká písmena a naopak.
s.upper() Vrací řetězec převedený na velká písmena.

Formátování řetězců pomocí %

formatovaciRetezec %  parametry--> vrací řetězec
Příklady
Formátovací řetězec Výsledek
'%3d' % 2 ' 2'
'%03d' % 2 '002'
'%+d' % 2 '+2'
'%.4f' % 2 '2.0000'
'%.*f' % (4, 2) '2.0000'
'%010.4f' % 2 '00002.0000'

Operace nad seznamy (typ list )

Operace Výsledek
s[i]=x prvek s indexem i je nahrazen x
1. prvek má index 0!
s[i:j[:krok]]= t část seznamu s od indexu i do jje nahrazena t
dels[i:j[:krok]] smaže prvky od i do j; stejné jako s[i:j] = []
s.append(x) přiřadí x na konec seznamu; stejné jako s[len(s) : len(s)] = [x]
s.extend(x) přiřadí seznam x na konec seznamu s; stejné jako s[len(s):len(s)]=x
s.count(x) vrací počet prvků, které se rovnají x (s[i] == x)
s.index(x[, start[,stop]]) vrací první index i, kde platí s[i]==x.
start
a stop mohou omezit rozsah hledání.
s.insert(i,x) vloží x před index i; stejné jako s[i:i] = [x]
i == -1 vkládá před poslední prvek.
s.remove(x) smaže první x, které najde; stejné jako del s[s.index(x)]
s.pop([i]) smaže a vrátí poslední (i-tý) prvek
s.reverse() otočí na místě seznam. Příklad:
chybně: print s.reverse() # vytiskne None, tedy nic
správně:s.reverse(); print s

s.sort() seřadí na místě seznam podle velikosti

Operace nad slovníky (typ dict )

Operace Výsledek
dict( **kw) Vytváří slovník. Pojmenované argumenty kw jako počáteční seznam.
d[k] Hodnota na klíči k
d[k]=x Přiřaď x na d[k]
del d[k] Smaž d[k] z d
d.has_key(k)
k in d
Pravda , když klíč k je ve slovníku d, jinak Nepravda
d.items() Seznam dvojic (klíč, hodnota) ze slovníku d
d.keys() Seznam klíčů slovníku d
d1.update(d2) Aktualizace slovníku d1slovníkem d2
d.values() Seznam hodnot slovníku d
d.iteritems() Vrací iterátor přes dvojice (klíč, hodnota). Příklad:
for klic, hodnota in d.iteritems():
    print klic, hodnota

d.pop(k[,default]) Maže klíč k a vrací jeho hodnotu. Pokud není nalezen, vrací default.


Operace na souborech

Vytváří se hlavně pomocí vnitřní funkce file() .

Otevírání textových souborů

Operace Výsledek
f=file('nazev.txt')
Otevře soubor jen na čtení. Možné psát plně: f=file('nazev.txt','r') 'r' jako read.
f=file('nazev.txt','w')
'w' jako write. Vytvoří soubor jen na zápis. Pokud soubor již existoval, obsah bude smazán.
f=file('nazev.txt','a')
'a' jako append. Otevře soubor pro čtení i zápis. Pokud soubor neexistuje, bude vytvořen.

Operace na souborech

Operace Výsledek
f.close() Uzavři soubor f.
f.read([pocetbytu]) Přečte celý soubor a vrátí ho jako řetězec. Při zadání pocetbytu čte a vrací jen zadaný počet bytů.
f.readline() Čte a vrací jednu řádku ze souboru f.
f.readlines() Čte až do konce souboru a vrací seznam řádek.
for radka in  f:
    print radka
Opakovaně čte (a zpracovává) řádky ze souboru.
f.write(str) Zapíše řetězec do souboru f.
f.writelines(seznam) Zapíše seznam řetězců do souboru f.

Operace na množinách

Od 2.4 má Python množiny: set a frozenset (neměnitelné množiny).

Operace Výsledek
set/frozenset([iterable=None]) Vytvoří množinu set nebo frozenset z dané iterable např.([1,2,3]) , set("hello") .
len(s) Mohutnost množiny s.
prvekin s / not ins True  když prvek patří / nepatří do množiny s.
for prvekin s: process prvek... Procházení prvky množiny  s.

Základní funkce

Řízení běhu

Příkaz Výsledek
if podmínka:
    tělo
[elif podmínka2:   tělo2] *
[else:
    tělo3]
Obvyklý if/else příkaz. Provede se vždy jen jedno tělo, to první pravdivé, pak if končí. Elif i else jsou nepovinné. Else může být jen jedno, elif kolik chcete.

while podmínka:
    tělo
[else:
    tělo]
Obvyklý příkaz while. Tělo else se provede jen tehdy, pokud dojde k obyčejnému ukončení cyklu, tedy ne pomocí break .

for element in posloupnost:
    tělo
[else:    tělo2]
Procházení posloupností a přiřazování každé položky do proměnné element. Na vytváření jednoduchých posloupností používejte funkci range ( xrange ). Tělo else se provede jen tehdy, pokud dojde k obyčejnému ukončení cyklu, tedy ne pomocí break .
break Okamžitě ukončuje cykly for a while.
continue Okamžitě se posune na další prvek v posloupnosti v cyklech for a while .
return[výsledek] Návrat z funkcí.

Výjimky, chyby

Příkaz
Výsledek
try:
    tělo1
except:
    tělo2
[else:
    tělo3]
Příkazy v těle1 jsou normálně prováděny. Pokud se vyskytne nějaká chyba, provádění se přerušuje a pokračuje se v except v těle2. Po provedení části except se pokračuje až za else. Pokud tělo1 skončí bez chyby, provede ještě případná část else .
try:
  block1
[except [exception [, value]:
  handler1]+
[else:
  else-block]
finally:
  final-block
Příkazy v block1 jsou normálně prováděny. Pokud nenastane žádná chyba, provede se ještě else-block i final-block. Pokud nastaveno v block1 chyba, provede se handler1 a finally. Vyzkoušejte:
try:
    # print chyba
    print "try"
except:
    print "except"
else:
    print "else"
finally:
    print "finally"
raise Úmyslné vyvolání chyby (předchozí nebo nové)
with alokace [as proměnná]
    with-block
Při použití tohoto příkazu je třeba použít   from __future__ import with_statement.
Jedná se o další zjednodušení kódu, příklad se souborem: Příklad:

with open('/etc/passwd', 'r') as f: # na konci se soubor *automaticky* zavře
  for radka in f:
    print radka


Funguje na všem, co podporuje tzv. context management protocol.

Importování a global

Importované moduly se musí nacházet v jedné z Pythonovských cest (print sys.path).
Příkaz
Výsledek
import modul1
Importuje moduly. Použití:
import time
print time.localtime()
from modul import * Importuje modul přímo do prostoru jmen programu, takže se nemusí před funkcemi vypisovat jméno modulu. Nebezpečné, možnost konfliktu jmen! Použití:
from time import *
print localtime()

global jmeno 1 [, jmeno2] Jména zadaných proměnných se stanou globálními, to znamená že budou přístupná i v ostatních funkcích programu. Nedoporučuje se nadužívat.

Základní  funkce

Funkce Výsledek
abs(x) Vrací absolutní hodnotu čísla x .
chr(i) Vrací znak, jehož ASCII hodnota je číslo i.
cmp(x,y) Vrací -1,0 nebo +1, pokud x<, == nebo > než y.
complex(real[,imag]) Vytváří komplexní číslo; dá se udělat také pomocí j , např. 1+3j.
dict( [posloupnost nebo slovník]) Vrací nový slovník. Možnost zadat počáteční stav jako argument. Příklad:
  • dict({'one': 2, 'two': 3})
  • dict([['two', 3], ['one', 2]])
  • dict(one=2, two=3)
dir([objekt]) Bez argumentu vrací seznam jmen lokálního prostoru jmen. S argumentem (modul, třída, instance,...) vrací seznam jmen v jeho slovníku.
divmod(a,b) Vrací dvojici (a/b, a%b)
enumerate(iterable) Iterátor vracející dvojici (index, hodnota) z iterable.
eval(s[,globals[,locals]]) Vyhodnotí (vykoná) řetězec s. Volitelně možno provádět v kontextu globals, locals.
Příklad:
x = 1
print eval('x + 1')
execfile(file[,globals[,locals]]) Spustí program.
file(filename[,mode='r']) Vrací objekt souboru. filename je název souboru, který se má otevřít. mode určuje, jak se má otevřít
float(x) Převádí celé číslo nebo řetězec na desetinné číslo.
help([object]) Vyvolává vestavěnou nápovědu.
input([prompt]) Čeká na vstup čísla od uživatele. Možno zadat výzvu (prompt).
int(x) Převádí číslo nebo řetězec na celé číslo.
len(objekt) Vrací délku (počet prvků) objektu (seznam, slovník, ....).
list( posloupnost ) Převádí posloupnost na seznam.
max( posloupnost [, args...]) Při jednom argumentu ( posloupnost) vrací největší prvek z posloupnosti. Při více argumentech vrací největší z argumentů.
min(seq[,args...]) Při jednom argumentu ( posloupnost) vrací nejmenší prvek z posloupnosti. Při více argumentech vrací nejmenší z argumentů.
ord(c) Vrací ASCII hodnotu c(řetězec délky 1).
pow(x,y[,z]) Vrací mocninu x**y (modulo z).
range(start[,end[,krok]]) Vrací seznam čísel od start (včetně) do end (mimo).
range(10): # od 0 do 9 (10 tam nepatří)
range(2,8): # 2,3,4,5,6,7 (8 tam nepatří)
range(2,14,2): # 2,4,6,8,10,12 (14 tam nepatří)
raw_input([prompt]) Čeká na řetězec od uživatele. Možno zadat výzvu (prompt). Viz také input().
round(x,n=0) Vrací číslo zaokrouhlené na n desetinných míst.
str(object) Převádí cokoliv na řetězec.
sum( posloupnost ) Vrací součet posloupnosti čísel.
tuple([posloupnost]) Vytváří n-tici se stejnými prvky, jako má posloupnost.
type(objekt) Vrací typ objektu.
xrange(start[,end[, krok]]) Jako range(),ale nevrací celý seznam najednou, ale jako iterátor čísel. Vhodné pro velká čísla a málo paměti.
zip(posl1[,posl2,...]) Vrací seznam n-tic, kde každá n-tice obsahuje i-tý prvek z každé posloupnosti.

Závěr

Těšilo mě. ;-)