Materiały dydaktyczne do kursu programowania w Pythonie 3.
- Python 3.11 lub nowszy (zalecany 3.13) — python.org
- Nie jest wymagana żadna zewnętrzna instalacja poza standardowym Pythonem
git clone https://github.com/<user>/python-programming.git
cd python-programmingWindows (PowerShell):
# Jednorazowa konfiguracja (tworzy .venv i instaluje zależności)
.\scripts\setup_venv.ps1
# Aktywacja w bieżącej sesji
.\.venv\Scripts\Activate.ps1Linux / macOS / Git Bash:
bash scripts/setup_venv.sh
source .venv/bin/activateRęcznie (każdy system):
python -m venv .venv
# Windows:
.venv\Scripts\pip install -r requirements.txt
# Linux/macOS:
.venv/bin/pip install -r requirements.txt# Z katalogu głównego projektu (Windows):
.venv\Scripts\python.exe -m pytest src\_01-introduction -v
.venv\Scripts\python.exe -m pytest src\_02-functions -v
.venv\Scripts\python.exe -m pytest src\_03-modules -c src\_03-modules\pytest.ini -v
.venv\Scripts\python.exe -m pytest src\_04-classes -c src\_04-classes\pytest.ini -v
.venv\Scripts\python.exe -m pytest src\_05-exceptions -c src\_05-exceptions\pytest.ini -v
.venv\Scripts\python.exe -m pytest src\_06-regex -c src\_06-regex\pytest.ini -v
.venv\Scripts\python.exe -m pytest src\_07-html-parser -c src\_07-html-parser\pytest.ini -v
# Po aktywacji venv (każdy system):
python -m pytest src/_01-introduction -v
python -m pytest src/_02-functions -v
python -m pytest src/_03-modules -c src/_03-modules/pytest.ini -v
python -m pytest src/_04-classes -c src/_04-classes/pytest.ini -v
python -m pytest src/_05-exceptions -c src/_05-exceptions/pytest.ini -v
python -m pytest src/_06-regex -c src/_06-regex/pytest.ini -v
python -m pytest src/_07-html-parser -c src/_07-html-parser/pytest.ini -v# Wymaga połączenia z Internetem (używa plantuml.com)
.venv\Scripts\python.exe src\_01-introduction\generate_diagrams.py
.venv\Scripts\python.exe src\_02-functions\generate_diagrams.py
.venv\Scripts\python.exe src\_03-modules\generate_diagrams.py
.venv\Scripts\python.exe src\_04-classes\generate_diagrams.py
.venv\Scripts\python.exe src\_05-exceptions\generate_diagrams.py
.venv\Scripts\python.exe src\_06-regex\generate_diagrams.py
.venv\Scripts\python.exe src\_07-html-parser\generate_diagrams.py
.venv\Scripts\python.exe src\_08-pliki-strumienie\generate_diagrams.py
.venv\Scripts\python.exe src\_09-Django\generate_diagrams.pyModuł 09 – Django: diagramy generuje ten sam skrypt, ale testy uruchamia się przez
python manage.py test cataloglubpytestz katalogusrc/_09-Django/06-complete-app/bookshelf/.
src/_01-introduction/README.md- wprowadzenie do Pythona 3 (typy, sterowanie, uruchamianie, mutowalność)src/_02-functions/README.md- funkcje w Pythonie 3 (definicje, argumenty, lambda, SRP)src/_03-modules/README.md- moduły, importy, pakiety, pycache i zarządzanie zależnościamisrc/_04-classes/README.md- klasy i programowanie obiektowe (dziedziczenie, polimorfizm, wzorce projektowe)src/_05-exceptions/README.md- wyjątki, obsługa plików i serializacja (pickle)src/_06-regex/README.md- wyrażenia regularne (składnia, modułre, grupy, flagi, wzorce zaawansowane)src/_07-html-parser/README.md- HTMLParser (parser strumieniowy, zdarzenia, ekstrakcja linków, zliczanie tagów, alternatywy)src/_08-pliki-strumienie/README.md- pliki i strumienie (tekstowe, binarne, szyfrowanie, io, generatory)src/_09-Django/README.md- Django: MVT, modele, widoki, szablony, formularze, CRUD, SQLite
Dla studentów I roku polecana kolejność pracy:
_01-introduction- fundamenty składni i modelu działania Pythona._02-functions- budowanie modularnego kodu, funkcje wyższego rzędu i dobre praktyki projektowe._03-modules- praca z modułami i pakietami, import system i dobre praktyki ekosystemu._04-classes- programowanie obiektowe: klasy, dziedziczenie, polimorfizm, interfejsy._05-exceptions- obsługa błędów, pliki tekstowe i binarne, serializacja._06-regex- wyrażenia regularne: składnia, modułre, grupy, flagi, zaawansowane wzorce, walidacja._07-html-parser- HTMLParser: parser strumieniowy, zdarzenia, ekstrakcja linków, zliczanie tagów, ograniczenia i alternatywy._08-pliki-strumienie- pliki tekstowe i binarne, szyfrowanie, strumienieio, generatory i potoki._09-Django- tworzenie aplikacji webowych w Django: MVT, ORM, szablony HTML, formularze, pełny CRUD.
Sugerowany rytm nauki:
- najpierw przeczytaj
README.mdwybranego tematu, - uruchom przykłady z
examples/, - na końcu rozwiąż zadania z
exercises/i sprawdź je testamipytest.
python-programming/
├── .venv/ # środowisko wirtualne (ignorowane przez git)
├── requirements.txt # zależności projektu
├── pyproject.toml # konfiguracja narzędzi (pytest, ruff, mypy)
├── scripts/
│ ├── setup_venv.ps1 # skrypt konfiguracyjny (Windows PowerShell)
│ └── setup_venv.sh # skrypt konfiguracyjny (Linux/macOS)
└── src/
├── _01-introduction/
│ ├── pytest.ini # konfiguracja pytest dla modułu
│ ├── requirements.txt # zależności modułu
│ ├── generate_diagrams.py # generator PNG z .puml
│ ├── control-flow/ # instrukcje sterujące
│ ├── data-types/ # typy danych
│ ├── interpreters/ # kompilatory i interpretery
│ ├── mutability/ # mutowalność / niemutowalność
│ └── running-python/ # sposoby uruchamiania kodu
├── _02-functions/
├── pytest.ini # konfiguracja pytest dla modułu
├── generate_diagrams.py # generator PNG z .puml
├── 01-definition/ # definicja funkcji
├── 02-arguments/ # argumenty pozycyjne, nazwane, *args, **kwargs
├── 03-lambda-calculus/ # rachunek lambda i podstawy teoretyczne
├── 04-lambda-usage/ # praktyczne użycie lambda (map/filter/reduce)
└── 05-srp/ # zasada pojedynczej odpowiedzialności dla funkcji
└── _03-modules/
├── pytest.ini # konfiguracja pytest dla modulu
├── generate_diagrams.py # generator PNG z .puml
├── 01-namespaces/ # przestrzenie nazw i LEGB
├── 02-module-vs-script/ # __name__ == "__main__"
├── 03-stdlib-batteries/ # biblioteka standardowa
├── 04-imports-and-symbol-tables/
├── 05-import-mechanism-pythonpath/
├── 06-compilation-pycache/
├── 07-packages-and-init/
├── 08-advanced-import-topics/
└── 09-dependency-management/
├── _04-classes/
├── pytest.ini # konfiguracja pytest dla modułu
├── generate_diagrams.py # generator PNG z .puml
├── 01-class-vs-object/
├── 02-class-definition-and-object-creation/
├── 03-self-parameter/
├── 04-instance-vs-class-members/
├── 05-private-members/
├── 06-special-methods/
├── 07-inheritance-basics/
├── 08-multiple-inheritance/
├── 09-polymorphism/
├── 10-large-example-inheritance-polymorphism/
├── 11-interfaces-in-python/
└── 12-design-patterns-polymorphism/
└── _05-exceptions/
├── pytest.ini # konfiguracja pytest dla modułu
├── generate_diagrams.py # generator PNG z .puml
├── 01-exception-vs-error/ # wyjątek vs błąd
├── 02-try-except-else-finally/ # pełny schemat obsługi
├── 03-custom-exceptions/ # własne wyjątki
├── 04-built-in-exceptions/ # wyjątki wbudowane
├── 05-file-handling-caesar-cipher/ # pliki + szyfr Cezara
└── 06-pickle-and-serialization/ # pickle i serializacja
└── _06-regex/
├── pytest.ini # konfiguracja pytest dla modułu
├── generate_diagrams.py # generator PNG z .puml
├── 01-formal-languages/ # języki formalne i automaty
├── 02-basic-syntax/ # podstawowa składnia regex
├── 03-re-module/ # moduł re – API
├── 04-groups/ # grupy i przechwytywanie
├── 05-flags/ # flagi i tryby
├── 06-advanced-patterns/ # zaawansowane wzorce
└── 07-practical-use/ # praktyczne zastosowania
└── _07-html-parser/
├── pytest.ini # konfiguracja pytest dla modułu
├── generate_diagrams.py # generator PNG z .puml
├── 01-streaming-parser-events/ # analizator strumieniowy i zdarzenia
├── 02-subclassing/ # rozszerzanie parsera (dziedziczenie)
├── 03-event-handling/ # obsługa zdarzeń i callbacki
├── 04-link-extraction/ # ekstrakcja linków (szczegółowo)
├── 05-tag-counting/ # zliczanie tagów i statystyki
└── 06-limitations-and-alternatives/ # ograniczenia i alternatywy
├── _08-pliki-strumienie/
│ ├── pytest.ini
│ ├── generate_diagrams.py
│ ├── 01-text-files/ # pliki tekstowe, kodowania, pathlib
│ ├── 02-binary-files/ # pliki binarne, struct, mmap
│ ├── 03-encryption/ # szyfrowanie XOR, AES/Fernet, SHA-256
│ ├── 04-streams-and-io/ # strumienie io (StringIO, BytesIO)
└── 05-stream-filtering/ # filtrowanie strumieni, generatory, potoki
└── _09-Django/
├── README.md # przegląd modułu
├── generate_diagrams.py # generator PNG z .puml
├── 01-introduction-and-setup/ # MVT, instalacja, pierwszy projekt
├── 02-models-and-orm/ # modele, ForeignKey, migracje, ORM
├── 03-views-and-urls/ # routing, widoki FBV i CBV
├── 04-templates/ # szablony DTL, dziedziczenie
├── 05-forms-and-crud/ # formularze, walidacja, CRUD
└── 06-complete-app/ # kompletna aplikacja Bookshelf
└── bookshelf/ # projekt Django (38 testów)
| Pakiet | Wersja | Opis |
|---|---|---|
| pytest | ≥ 7.4 | framework do testów jednostkowych |
| pytest-cov | ≥ 4.1 | pokrycie kodu testami |
| plantuml | ≥ 0.3 | generowanie diagramów PNG z .puml |
| django | ≥ 4.2 | framework webowy (moduł _09-Django) |
| pytest-django | ≥ 4.5 | integracja pytest z Django (moduł _09) |
| Pakiet | Wersja | Opis |
|---|---|---|
| pytest | ≥ 7.4 | framework do testów jednostkowych |
| pytest-cov | ≥ 4.1 | pokrycie kodu testami |
| plantuml | ≥ 0.3 | generowanie diagramów PNG z .puml |