Python

Python je docela oblíbený interpretovaný jazyk. Má netradiční syntax: především, kód je strukturovaný odsazováním. Pro skoro jakékoliv odvětví lidského zájmu má dobrou nabídku knihoven, pro hodně běžných úloh má zabudovanou podporu.

Datové struktury

Tuple unpacking

Syntax:
proměnná1, proměnná2 = sekvence délky 2

Tuple umožňuje jednoduše navracet více hodnot jako výsledek funkce. Například:

return 500, "Server Error"

Obdobně jde tuple bez kulatých závorek použít například i při dosazování do proměnné:

status = 404, "Page not found"
# status[0] == 404
# status[1] == "Page not found"

Stejný fígl jde použít i na levé straně rovnítka:

code, message = status
# code == 404
# message == "Page not found"
Tahle syntax se výborně hodí v hlavičce for cyklu:
for x, y in (-1, 0), (0, -1), (0, 1), (1, 0):
	print("vodorovně:", x, "svisle:", y)
# vodorovně: -1 svisle: 0
# vodorovně: 0 svisle: -1
# ...
Oblíbený trik je jednořádkové prohození obsahu dvou proměnných:
status, error = error, status

List comprehension

Syntax:
[výraz for proměnná in sekvence]

For cyklus, který vyrábí z jednoho seznamu jiný seznam, jde přepsat na jeden řádek. Například řekněme, že chceme vyrobit seznam druhých mocnin:

mocniny = list()
for x in range(5):
	mocniny.append(x ** 2)
# mocniny == [0, 1, 4, 9, 16]
Zápis pomocí list comprehension vlastně jen znamená, že smažeme volání list.append a výraz (v tomhle případě x**2) přesuneme z konce na začátek:
mocniny = [x ** 2 for x in range(5)]
# mocniny == [0, 1, 4, 9, 16]
Při troše zvyku je takový kód o hodně lépe čitelný než ten původní cyklus, a je kratší.

Sekvence

Sekvence je něco, co můžeme projít for cyklem. Nutně tedy potřebujeme funkci, která nám vždycky navrátí další prvek v pořadí.

Sekvence range

Syntax:
range(počet)

Složitější varianta:
range(začátek, za_koncem)
range(začátek, za_koncem, krok)

Například:

for x in range(4):
	print(x)
# 0
# 1
# 2
# 3

Generátory

Sekvenci můžeme popsat bez toho, aniž bychom ji ukládali. Zápis je stejný jako v případě list comprehension, ale použijeme kulaté závorky. Generátor umožňuje každý prvek přečíst jenom jednou – stejně jako obyčejný for cyklus.

Syntax:
(výraz for proměnná in sekvence)

mocniny = list()
for x in range(5):
	mocniny.append(x ** 2)
# mocniny == [0, 1, 4, 9, 16]