http://studuj.bioinformatiku.cz

“Python is the second most useful language on Earth. The first one is English.” (Angik Sarkar)

“The primary design principle behind the Python programming language is to take everything that’s horrible and wrong with Perl and get it horrible and wrong in a completely different and even more hideous way. Today, however, we shall be looking at a particularly egregious case of stupidity the likes of which not even PHP has managed to replicate.” (Ciaran McCreesh)

"If you give someone a program, you will frustrate them for a day; if you teach them how to program, you will frustrate them for a lifetime." (Anonymous)

„Přednášející skákal od jednoho tématu k druhému, přednášky neměly téměř žádnou konzistenci. Materiály byly zveřejněné na serveru přednášejícího, na přednášky jako takové se nevyplatilo chodit, mnohem efektivněji se dal čas využít samostudiem slajdů, které byly na kvalitní úrovni. Zadané domácí úkoly byly zajímavé a poměrně lehké, nezabíraly tudíž mnoho času.“ (z ankety na FITu)

základy

Python čtený podruhé
  1. Instalační kuchařka (aneb „Instalace potřebných programů pro začátečníky“)
  2. Úprava kódu (aneb „Jak by mohl vypadat pythoní zdrojový kód“)
  3. Úvod do Python'u (pro karlisty, s příklady)
  4. tahák pro Python 3.X
  5. Pythoní záludnosti
  6. hlavní rozdíly mezi Python'em 3.x a 2.x [TODO]

PS 1: Přehled Python'u (pro programátory) [Bird's Eye View of Python 3]
PS 2: Opakování základů Python'u (pro druhý semestr)

strategie řešení problémů

základní typy

  1. neproměnné (immutable)
  2. proměnné (mutable)

řídicí a další konstrukce

funkce

Pythoní funkce čtené podruhé
  1. základy [functions basics]
  2. argumenty / parametry
  3. viditelnost proměnných
  4. uzávěry, lambda-funkce… [TODO]
  5. funkce jako „first-class citizen [TODO]
  6. další funkcionální prvky
  7. dekorátory
  8. anotace funkcí
  9. funkce vyššího řádu (modul functools)
  10. generické funkce (typu single dispatch)
PS: Doporučuji začít první (nečíslovanou) přednáškou. Pokud se v ní ztratíte nebo pokud vás budou zajímat některá témata podrobněji, pusťte se do číslovaných.

generátory a korutiny

  1. generátory
  2. generátorové výrazy [TODO více příkladů]
  3. korutiny
  4. užití generátorů
  5. užití korutin

Python jako „funkcionální“ jazyk

  1. funkce jsou „first class citizen“ (viz bod funkce)
  2. všechno jsou iterátory (viz bod generátory a korutiny)
  3. modul operator – operátory jako funkce
  4. Python funkcionální [TODO?]

vstup a výstup

  1. načítání dat ze souborů („kuchařka“) [files basics]
  2. modul fileinput – načítání dat ze standardního vstupu a přes vícero souborů
  3. práce se soubory (celkový přehled)
    1. více o textových souborech
    2. více o binárních souborech
  4. více o kontextu with
  5. více o proudech (aka streams)
  1. uživatelský vstup (input(), sys.argv, getopt, optparse)
  2. modul argparse [TODO subcommands a 3.3+]
  3. balíček docopt (externí knihovna)
  1. modul pathlib – souborový sytém objektově (Py3.4+)
  2. souborový systém (os, os.path, shutil)
  3. modul tempfile
  4. práce s velkými soubory pomocí mmap
  5. porovnávání souborů a adresářů pomocí filecmp
  1. hrátky s printem [TODO formátování]
  2. balíček colorama (externí knihovna)
  3. modul textwrap
  4. „keyboard polling“

některé další datové typy a moduly pro práci s nimi

výjimky & testování & ladění & dokumentace

výjimky a testování

dokumentace kódu

ladění kódu

všehochuť

třídy

  1. úvod pro OOP-programátory
  2. funkce super()
  3. introspekce (včetně modulu inspect [TODO])
  4. deskriptory (aka getters&setters)
  5. „magické“ metody [TODO odkazy na popsané jinde]
  6. dekorátory tříd [TODO]
  7. Třídy pro pokročilé aneb „Na slovíčko o metatřídách“ [TODO]
  8. ABCs (abstract base classes)

aplikace

Úvod pro ne-OOP-programátory

  1. obecný přehled
  2. úvod (zavedení, atributy, inicializace, dědičnost…)

moduly

  1. Modulová kuchařka (aneb „Úvod do práce s moduly pro začátečníky“)
  2. moduly v Python'u (dosti podrobně)
  3. letem světem standardní knihovnou

Python prakticky

virtuální prostředí

balíčky

Conda (externí systém)

Jupyter (systém externích knihoven)

webové API

XML API

serializace

a) interní

  1. základy
  2. modul pickle (včetně pickletools)
  3. modul shelve
  4. modul marshal

b) ostatní

DB API

a) databáze

b) ORM

interakce s prostředím

a) základní techniky

b) FFI (Foreign Function Interface)

c) Cython (externí balíček)

paralelizace

NumPy (externí balíček pro numerickou matematiku)

Zrychlování programů

Příklad: filtrace obrázků

grafický výstup

Matplotlib (externí knihovna)

„Želví“ (aneb relativní) grafika

  1. úvod
  2. další vlastnosti
  3. rekurzivní obrazce

GUI

curses

Tkinter

webová rozhraní

zvukový výstup

vybrané další externí knihovny

CPython – bajtkód, interpretr

  1. úvod do problematiky (modul dis, funkce compile)
  2. vlastnosti objektu kódu (funkce compile)
  3. soubory *.pyc
  4. symbolické instrukce
  1. generátorová notace versus smyčka for
  2. smyčka for vs while
  3. klasická pythoní smyčka for-in
  4. smyčka for-in range vs repeat
  5. objekty proměnné versus neproměnné

Velká část přednášek z Python'u byla vytvořena v rámci přípravy studijního programu Informatika na Fakultě informačních technologií ČVUT, kterážto byla podpořena projektem financovaným z Evropského sociálního fondu a rozpočtu města Prahy:

Praha & EU: Investujeme do vaší budoucnosti
EU-grant pro FIT ČVUT


Část přednášek z Python'u byla vytvořena a upravena v rámci přípravy předmětu Základy programování v jazyce Python pro potřeby projektu Centrum počítačového vzdělávání na VŠCHT Praha financovaného z prostředků OP VVV:

grant OP VVV pro VŠCHT