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