Python – Sylabus nauki od A do Z
(z naciskiem na OOP i pytest)
Kompletny plan nauki Pythona od podstaw do poziomu zaawansowanego.
Szczególny nacisk położony jest na programowanie obiektowe (OOP) oraz testowanie z użyciem pytest.
1. Podstawy absolutne
- Czym jest Python (CPython, wersje)
- Instalacja (Linux / Windows / venv)
- Uruchamianie:
- REPL
- pliki
.py - shebang
- Styl kodu:
- PEP8
- indentacja
- komentarze
- Podstawowe typy danych:
int,floatstrboolNone
- Operatory:
- arytmetyczne
- porównania
- logiczne
- Zmienne i przypisania
- Konwersje typów (
int(),str())
2. Struktury danych
list- indeksowanie
- slicing
- metody (
append,pop,sort)
tuplesetdict- Zagnieżdżone struktury danych
- Iterowanie po kolekcjach
- Operatory
in,len()
3. Sterowanie przepływem
- Instrukcje warunkowe:
if / elif / elsematch-case
- Pętle:
forwhile
break,continuepass- Wyrażenia warunkowe (ternary operator)
4. Funkcje
- Definicja funkcji
- Parametry:
- pozycyjne
- nazwane
- domyślne
*args,**kwargs
return- Docstringi
- Type hints (podstawy)
- Funkcje jako obiekty
- Funkcje zagnieżdżone
5. Praca z plikami i systemem
open()- Tryby plików
- Praca z plikami CSV i JSON
pathlibos- Argumenty linii poleceń:
sys.argvargparse
6. Wyjątki i błędy
try / except / else / finally- Typy wyjątków
- Własne wyjątki
raise- Dobre praktyki obsługi błędów
7. Moduły i pakiety
import,from,as- Struktura pakietu
__init__.py__name__ == "__main__"- Moduły standardowe
- Zarządzanie zależnościami:
piprequirements.txt
8. Wprowadzenie do OOP (blok kluczowy)
- Czym jest OOP
- Klasa vs obiekt
- Atrybuty i metody
- Konstruktor
__init__ self- Enkapsulacja
9. OOP – poziom podstawowy
- Metody instancji
- Metody klasowe (
@classmethod) - Metody statyczne (
@staticmethod) - Atrybuty klasowe vs instancji
- Widoczność (
_,__) __repr__,__str__
10. OOP – dziedziczenie
- Dziedziczenie klas
super()- Nadpisywanie metod
- Polimorfizm
- Kompozycja vs dziedziczenie
- MRO (Method Resolution Order)
11. OOP – zaawansowane
- Klasy abstrakcyjne (
abc) - Interfejsy w Pythonie
@propertydataclasses__slots____eq__,__hash__- Obiekty niemutowalne (immutable)
12. Programowanie funkcyjne w Pythonie
map,filter,reducelambda- Comprehensions:
- list
- dict
- set
- Generatory
yield
13. Typowanie statyczne
- Type hints
OptionalUnionTypedDictProtocolmypy- Typowanie w projektach OOP
14. Testowanie – podstawy (pytest)
- Dlaczego testujemy kod
- Rodzaje testów:
- unit tests
- integration tests
- Instalacja pytest
- Struktura testów
assert- Uruchamianie testów
- Testowanie funkcji
15. pytest – praktyka
- Fixtures
- Scope fixtures
@pytest.mark.parametrize- Markery
- Testowanie wyjątków
- Testowanie klas i metod
- Testowanie kodu OOP
16. pytest – zaawansowane
monkeypatchcapsys- Mocki (
unittest.mock) - Testy regresji
- Testy przypadków brzegowych
- Pokrycie kodu:
pytest-cov
17. Dobre praktyki i clean code
- SOLID w Pythonie
- DRY / KISS
- Refaktoryzacja
- Czytelne nazewnictwo
- Struktura projektu
- Dependency Injection
- Projektowanie kodu testowalnego
18. Praca z bibliotekami
requestsdatetimeloggingsqlite3/ PostgreSQL- Obsługa API
- Serializacja danych
19. Asynchroniczność (opcjonalnie)
async / awaitasyncio- I/O bound vs CPU bound
- Testowanie kodu async w pytest
20. Projekt końcowy
- Aplikacja oparta o OOP
- Jasna separacja warstw
- Testy jednostkowe (pytest)
- Mockowanie zależności
- Typowanie statyczne
- Dokumentacja projektu
🎯 Cel końcowy
Po ukończeniu sylabusa:
- rozumiesz Python od podstaw
- swobodnie stosujesz OOP
- piszesz testy w pytest
- potrafisz projektować czysty, testowalny kod