Course Code: kpadvint
Duration: 14 hours
Course Outline:

 

Konsultacje Python Advanced 

1. Podstawy Pythona 

Struktury danych i operacje 

Integers i floats - operacje matematyczne, konwersje typów 

Strings i bytes - manipulacja tekstu, kodowanie, formatowanie 

Tuples i lists - tworzenie, modyfikacja, iteracja przez kolekcje 

Dictionaries i ordered dictionaries - mapowanie klucz-wartość, organizacja danych 

Sets i frozen sets - operacje na zbiorach, usuwanie duplikatów 

Data frame (pandas) - wprowadzenie do analizy danych 

Comprehensions - efektywne tworzenie struktur danych 

Konwersje - przemiana między typami danych 

 

2. Programowanie obiektowe (OOP) 

Podstawy OOP 

Klasy, metody, dziedziczenie, super() - fundamenty programowania obiektowego 

Metody specjalne (str, repr, eq) - dostosowywanie zachowania obiektów 

Dekoratory (@property, hermetyzacja) - kontrola dostępu do atrybutów 

Zaawansowane OOP 

Dokumentowanie kodu - docstrings, komentarze, dokumentacja API 

Atrybuty klas - zmienne klasowe vs instancyjne 

Wielodziedziczenie oraz Method Resolution Order - złożone hierarchie klas 

Metoda Super - prawidłowe korzystanie z dziedziczenia 

Dostęp do atrybutów, atrybuty prywatne - enkapsulacja i ukrywanie implementacji 

Implementacja iterowalności dla klas - tworzenie obiektów iterowalnych 

Przeciążanie operatorów - dostosowywanie operacji matematycznych 

Klasy abstrakcyjne - definiowanie interfejsów 

Dekoratory klasowe z argumentami - zaawansowane wzorce projektowe 

MetaClasses - programowanie na poziomie metaklas 

 

3. Programowanie funkcyjne i dekoratory 

Funkcje jako obiekty pierwszej klasy - przekazywanie funkcji jako argumenty 

lambda, map, filter, reduce - funkcje wyższego rzędu 

Tworzenie własnych dekoratorów (logowanie, pomiar czasu) - rozszerzanie funkcjonalności 

 

4. Środowiska wirtualne i zarządzanie zależnościami 

venv - wbudowane środowiska wirtualne 

Tworzenie środowiska wirtualnego - izolacja projektów (python -m venv) 

Aktywacja i dezaktywacja środowiska - przełączanie między projektami 

Zarządzanie pakietami w izolowanym środowisku - unikanie konfliktów wersji 

pip i requirements.txt 

Instalacja pakietów z pip - dodawanie zewnętrznych bibliotek 

Generowanie requirements.txt - dokumentowanie zależności projektu 

Instalacja z requirements.txt - odtwarzanie środowiska 

Dobre praktyki 

Separacja projektów - jeden projekt = jedno środowisko 

Wersjonowanie zależności - kontrola kompatybilności 

Dokumentowanie wymagań projektu - ułatwienie współpracy w zespole 

Alternatywne narzędzia 

Jupyter - środowisko dla analizy danych i generowania raportów 

pipenv - nowoczesne zarządzanie zależnościami 

poetry - zaawansowane narzędzie do zarządzania projektami 

 

5. Modularność i struktura projektów 

Organizacja kodu w pakiety 

init.py, importy względne - tworzenie modułów i pakietów 

Virtualenv, requirements.txt, pip - zarządzanie zależnościami projektu 

 

6. Testowanie i dobre praktyki 

unittest i/lub pytest - automatyczne testowanie kodu 

Testy funkcji, klas, integracji - różne poziomy testowania 

Wstęp do mockowania (unittest.mock) - testowanie w izolacji 

Formatowanie (black), lintowanie (flake8), typowanie (mypy) - jakość kodu 

 

7. Programowanie asynchroniczne 

Czym jest async / await, event loop - podstawy programowania asynchronicznego 

asyncio.run, gather, sleep - orkiestracja operacji asynchronicznych 

● Tworzenie funkcji asynchronicznych 

Przykład: pobieranie danych z API równolegle (aiohttp) - praktyczne zastosowanie 

Asynchroniczne testy - testowanie kodu async 

 

8. Wątki i procesy 

Threading 

Uruchamianie wątków - równoległe wykonywanie zadań 

Synchronizacja wątków - koordynacja między wątkami 

Blocks, Semaphores, GIL - mechanizmy synchronizacji i ograniczenia 

Multiprocessing 

Processes, Queues, Locks - komunikacja między procesami 

Pools, Daemons - zarządzanie grupami procesów 

Wymiana danych pomiędzy procesami - współdzielenie informacji 

 

9. Typowanie i dataclasses 

Typy: podstawowe, opcjonalne, unie, literały, sekwencje i mapy 

Callables: funkcje, objekty i metody - typowanie funkcji 

Wielokrotne kowarancja, kontrawarancja i inwariancja - zaawansowane typowanie 

Typy generyczne, Aliasy typów - elastyczne definicje typów 

Statyczna analiza typów - mypy - weryfikacja poprawności typów 

Dataclasses: definicja, składnia, typy podstawowe, sekwencje mapy - struktury danych z typowaniem 

 

10. Generatory i itertools 

Zasada działania i introspekcja 

Wyrażenia generatorowe - efektywne przetwarzanie danych 

Słowa kluczowe yield i yield from - tworzenie generatorów 

Wysyłanie wartości do generatorów - dwukierunkowa komunikacja 

 

11. Narzędzia pomocnicze 

Adnotacje typów (Hints) 

Moduł TIMEIT, LOGGING, OS, SYS - narzędzia diagnostyczne i systemowe 

Interakcja z systemem operacyjnym i systemem plików - operacje na plikach i katalogach 

 

12. Kolekcje 

Moduł COLLECTIONS: NamedTuple, DataClass, DefaultDict, Deque, Counter - zaawansowane struktury danych 

 

13. Data Analysis i Wizualizacja 

Pandas 

Vectorizing data - optymalizacja operacji na danych 

Data wrangling - czyszczenie i przekształcanie danych 

Sorting & filtering data - organizacja i selekcja informacji 

Aggregate operations - grupowanie i agregacja danych 

Matplotlib 

Plotting diagrams - tworzenie wykresów i wizualizacji 

● Using matplotlib from within pandas 

● Visualizing data in Jupyter notebooks 

 

14. Data Serialization 

Python object serialization with Pickle - zapisywanie i odczytywanie obiektów 

 

15. UI Programming 

UI Programming with Python using Tkinter - tworzenie aplikacji graficznych 

 

 

16. Python for Maintenance Scripting 

Raising and catching exceptions correctly - obsługa błędów 

Organizing code into modules and packages - budowanie skalowalnej struktury projektów