Zaawansowany Python
Opis
Poznanie podstawowych konstrukcji języka Python i użycia ich w codziennej pracy zazwyczaj nie nastręcza większych trudności. Natomiast istnieje wiele potężnych mechanizmów języka, których nawet wieloletni adepci Pythona nie są świadomi. Szkolenie Zaawansowany Python jest dedykowany osobom, które pracują w języku Python i chciałyby poznać praktycznie bardziej zaawansowane elementy języka.
Szczegółowy program
Moduł 1.
Funkcje
- Funkcja w języku Python od środka
- Rekursja, jej konsekwencje i alternatywy
- Obiekty funkcyjne - atrybuty i adnotacje
- Introspekcje funkcji
- Atrybuty funkcji
- Adnotacje funkcji (Python 3+)
- Elementy programowania funkcyjnego
- Operatory funkcyjne
- Generatory
- Wyrażenia generatorowe
- Generatory dla obiektów wbudowanych
- Pragmatyka generatorów: EIBTI
- Zakres i zmienne dla wyrażeń listowych (list comprehensions)
- Wyrażenia listowe dla zbiorów i słowników
- Rozszerzanie składni wyrażeń listowych dla zbiorów i słowników
Moduł 2.
Moduły
- Moduły w języku Python od środka
- Ukrywanie danych w modułach: _X i __all__
- Włączanie funkcji języka: __future__
- Tryby mieszane z: __name__ i __main__
- Zmiana Module Search Path
- Importowanie modułów po nazwie tekstowej
- Przeładowywanie modułów
Moduł 3.
Przeciążanie operatorów
- Konstruktory i wyrażenia: __init__ oraz __sub__
- Indeksowanie i cięcie: __getitem__ oraz __setitem__
- Generowanie indeksów z __getitem__
- Obiekty iterowalne: __iter__ oraz __next__
- Przynależność: __contains__, __iter__ oraz __getitem__
- Dostęp do atrybutów: __getattr__ oraz __setattr__
- Ciągi znakowe: __repr__ oraz __str__
- Wyrażenie wywołania: __call__
- Porówania: __lt__, __gt__ i inne
- Testy logiczne: __bool__ oraz __len__
- Destruktor: __del__
Moduł 4.
Zaawansowane aspekty klas
- Rozszerzanie typów wbudowanych przez zagnieżdżanie
- Rozszerzenie typów wbudowanych przez dziedziczenie
- Nowy styl klas
- Zmiany w modelu typów
- Slots
- Properties
- __getattribute__ i deskryptory
- Metody statyczne w 2.x i 3.x
- Efektywne korzystanie z klas
Moduł 5.
Obsługa błędów
- Poprawne korzystanie z try/except/finally
- Wyrażenie raise
- Wyrażenie assert
- Menedżery kontekstu (context managers)
- Projektowanie hierarchii wyjątków
- Wyjątek - obiekt prosty czy złożony
- Idiomy związane z wyjątkami
Moduł 6.
Dekoratory i metaklasy
- Implementacja dekoratorów funkcji
- Implementacja dekoratorów klas
- Symulacja prywatnych i publicznych atrybutów
- Walidacja argumentów
- Model metaklasy
- Deklaracja metaklasy
- Implementacja metaklasy
- Metody metaklasy
- Dodawanie metod do klas
Moduł 7.
Profilowanie kodu
- Wbudowany profiler
- Profilowanie statystyczne
- Optymalizacja Pythona
- Dekompilacja, opkody, dis
- objgraph
- dowser
- heapy_
Moduł 8.
Elementy programowania reaktywnego i współbieżnego
- Współbieżność z futures
- Blokowanie I/O oraz GIL
- Uruchamianie procesów z concurrent.futures
- Executor.map
- Wprowadzenie do asyncio i aiohttp
- Callbacks
- Tworzenie serwerów z użyciem asyncio
- RxPY
Moduł 9.
Benchmarking
- Moduł Homegrown
- Tworzenie skryptów i analiza rezultatów
- Operacje na czasie z timeit
- pystones