Zaawansowane programowanie w języku Python

LICZBA DNI: 5 (40h)

KOD KURSU: PYTHON/ADV

# analysis

O szkoleniu

DLA KOGO?

Średnio zaawansowani programiści programujący w języku Python

Programiści tworzący aplikacje głównego nurtu oraz aplikacje sieciowe w języku Python

WYMAGANIA

umiejętność programowania w Python i znajomości podstawowych struktur danych

biegłe posługiwanie się wybranym środowiskiem IDE (PyCharm, PyDev)

znajomość koncepcji programowania obiektowego, systemowego i aplikacyjnego

umiejętność posługiwania się narzędziem debuggera języka Python

znajomość koncepcji związanych z programowaniem w języku Python na poziomie średnio i zaawansowanym

ZALETY

Uczestnicy szkolenia po jego zakończeniu zdobędą umiejętności analizy obiektowej i idiomów językowych Python oraz identyfikacji wąskich gardeł przetwarzania

Uczestnicy nauczą się tworzyć aplikacje z użyciem asynchronicznej komunikacji sieciowej, tworzyć zaawansowane struktury danych oraz wybierać i używać paradygmatów programowania

Cele szkolenia

Kształcenie umiejętności i rozwijanie wiedzy dotyczącej zaawansowanego programowania w języku Python

Osadzenia zaawansowanych narzędzi i procesów tworzenia oprogramowania w realiach współczesnych wymagań Inżynierii Oprogramowania

Dokonania konsolidacji wiedzy i uzupełnienia braków w kompetencjach w zakresie

Zapoznanie się z alternatywnymi wersjami interpretera

Pogłębienie znajomości mechanizmów języka Python

Program

  • Introspekcja
  • Debugging w IDE
  • Static typing vs dynamic typing
  • Mikrobenchmark - `timeit`
  • Wydajność wbudowanych struktury i typów danych
  • Moduł `collections`
  • Deklaracja zmiennych
  • Używanie w funkcjach, metodach i klasach
  • Definiowanie typów złożonych i szablonów typów
  • Wykorzystanie narzędzi do sprawdzania typów
  • Wykorzystanie narzędzi do dodawania typów do istniejącego kodu
  • Funkcje i metody wieloparametrowe - `*args`, `**kwargs`
  • Obiekt Callable
  • Rekurencja
  • Elementy paradygmatu funkcyjnego - `map`, `filter`, `reduce`, `zip`, `all`, `any`
  • Funkcje anonimowe - `lambda`
  • Domknięcia (closure)
  • Monkey patching
  • Moduł `functools`
  • Tworzenie obiektów dat, parsowanie i formatowanie - `datetime`
  • Przesunięcia czasu i obliczenia dat, przesunięcia o miesiąc - `timedelta`
  • Obsługa stref czasowych - `pytz`
  • Środowiska wirtualne - `venv`
  • Tworzenie własnych paczek: `setup.py`, `setup.cfg`
  • Zarządzanie zależnościami
  • Upload do `pypi.org` - `sdist`, `bdist`, `wheel`
  • Generowanie pakietów - `zipapp`
  • Preprocessor - `cython`
  • Alternatywny kompilator Python - `pypy`
  • Generowanie plików wykonywalnych dla systemu operacyjnego
  • Narzędzia integracji modułów w języku C i C++
  • Serializacja obiektów z relacjami do formatu CSV - `csv`
  • Serializacja obiektów oraz dat do formatu JSON - `json`
  • DB API na przykładzie `sqlite3`
  • ORM - `SQLAlchemy`, `Django ORM`
  • Dziedziczenie i kompozycja klas mixin
  • Przeciążanie operatorów
  • Mechanizm klas danych - `dataclasses`
  • Pola i metody statyczne - `staticmethod`, `classmethod`
  • Inicjacja klas i konstruktory - `__new__()` vs `__init__()`
  • MRO (ang. Method Resolution Order)
  • Mechanizm metaklas
  • S.O.L.I.D. principles, Tell-Don't-Ask i dobre praktyki
  • Akcesory - `setattr`, `getattr`, `hasattr`
  • Descriptor
  • String formatting - `__str__()`, `__repr__()`, `__format__()`
  • Comprehensions i Generator Expressions
  • Dekoratory funkcyjne oraz klasowe i moduł `functools`
  • Iterator i moduł `itertools`
  • Context Manager i moduł `contextlib`
  • Singleton
  • MVC
  • Gateway
  • State Machine
  • Event Listener
  • Factory
  • Context Dependency Injection
  • Callback
  • Proxy
  • Memoize
  • Wieloprocesowość * `multiprocessing`
  • Wielowątkowość i model Worker - `threading`
  • Komunikacja międzyprocesowa i międzywątkowa
  • Mechanizmy blokujące - `lock`
  • Kolejki - `queue`, `deque`
  • Programowanie asynchroniczne - `asyncio`
  • Statyczna analiza kodu źródłowego - `pylint`, `pylama`, `sonarlint`, `pyflakes`
  • Standard programowania PEP8, PEP20 i dobre praktyki - `pycodestyle`
  • Testy jednostkowe - `doctest`, `unittest`
  • Logowanie zdarzeń i informacje ostrzegawcze - `logging`, `warnings`
  • Print formatting i interpolacja zmiennych - `print`, `pprint`
  • Profiling, mierzenie złożoności cyklometrycznej, obliczeniowej i pamięciowej
  • Jak wdrożyć powyższe techniki w proces CI/CD
  • Deployment - `Docker`, `Docker-compose`
  • ReStructuredText i dokumentacja - `sphinx`
  • Protokół HTTP, metody, nagłówki, mimetype, statusy, kody odpowiedzi, sesje, cookies, wersjonowanie API
  • Proste i bardziej zaawansowane zapytania - `request`
  • Wprowadzenie do tworzenia serwerów HTTP
    • Moduł biblioteki standardowej Python - `http`
    • Micro web framework - `Flask`
    • Web framework - `Django`

Nasi eksperci

POLITYKA COOKIES:

Korzystamy z plików cookies, by móc jak najlepiej dostosować stronę do Twoich potrzeb oraz wyświetlać Ci przydatne i adekwatnych dla Ciebie reklamy w serwisie i poza nim. Możesz kontrolować ustawienia ciasteczek w swoich ustawieniach swojej przeglądarki. Odwiedzając tę stronę, wyrażasz zgodę na wykorzystywanie przez nas plików cookies.