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

Parametry szkolenia

Czas trwania
2 x 8h
Forma zajęć
Ćwiczenia - 50%, wykład - 50%
Kod
ZPY
Wielkość grupy
do 12 osób

Jak zamówić

« lista szkoleń