Uczestnicy szkolenia zapoznają się z zaawansowanymi konstrukcjami w języku Python, mechanizmami i praktykami programowania obiektowego oraz przykładami użycia wzorców projektowych. Na zajęciach zapoznają się z koncepcjami tworzenia aplikacji wielowątkowych, serializacją danych do różnych formatów i obsługą relacji. Szczególny nacisk kładziemy na praktyczne aspekty programowania oraz osadzenie technik wytwarzania oprogramowania w języku Python we współczesnych realiach. Szkolenie odpowiada potrzebom średnio zaawansowanych i zaawansowanych programistów i nie jest przeznaczone dla osób początkujących lub nieprogramujących.

Zakres szkolenia

Szkolenie obejmuje:

  • Type Annotation/Type Hinting,
  • Zaawansowane użycie funkcji,
  • Użycie Datetime ze strefami czasowymi
  • Moduły i paczkowanie
  • Serializacja i bazy danych
  • Programowanie obiektowe
  • Programowanie obiektowe
  • Wzorce projektowe
  • Dekoratory
  • Context Manager
  • Descriptor
  • Programowanie funkcyjne
  • Performance i Debugging
  • Alternatywne wersje interpretera/kompilatora
  • Dobre praktyki, testy i jakość oprogramowania
  • Programowanie wielowątkowe
  • (opcjonalne) Programowanie HTTP

Wymagania

Od uczestników szkolenia wymaga się:

  • umiejętności programowania w Python i znajomości podstawowych struktur danych
  • biegłego posługiwania się wybranym środowiskiem IDE (PyCharm, PyDev),
  • znajomości koncepcji programowania obiektowego, systemowego i aplikacyjnego,
  • umiejętności posługiwania się narzędziem debuggera języka Python,
  • znajomości koncepcji związanych z programowaniem w języku Python na poziomie średnio i zaawansowanym.

Adresaci szkolenia

Szkolenie adresowane jest do:

  • średnio zaawansowanych programistów programujących w języku Python,
  • programistów tworzących aplikacje głównego nurtu oraz aplikacje sieciowe w języku Python.

Cel szkolenia

Głównymi celami w procesie szkoleniowym są:

  • 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.

Umiejętności zdobywane podczas zajęć

Uczestnicy szkolenia po jego zakończeniu zdobędą następujące umiejętności:

  • analizy obiektowej i idiomów językowych Python,
  • identyfikacji wąskich gardeł przetwarzania,
  • tworzenia aplikacji z użyciem asynchronicznej komunikacji sieciowej,
  • tworzenia zaawansowanych struktur danych,
  • wybierania i używania paradygmatów programowania.

Parametry szkolenia

Szkolenie trwa 5 * 8 godzin (5 * 7 netto).

Szkolenie obejmuje 65% wykładu i 35% ćwiczeń.

Program szkolenia

  1. Performance i debugging
    • Introspekcja
    • Debugging w IDE
    • Static typing vs dynamic typing
    • Mikrobenchmark - timeit
    • Wydajność wbudowanych struktury i typów danych
    • Moduł collections
  2. Type Annotations
    • 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
  3. Zaawansowane użycie funkcji i elementy paradygmatu programowania funkcyjnego
    • Funkcje i metody wieloparametrowe - *args**kwargs
    • Obiekt Callable
    • Rekurencja
    • Elementy paradygmatu funkcyjnego - mapfilterreducezipallany
    • Funkcje anonimowe - lambda
    • Domknięcia (closure)
    • Monkey patching
    • Moduł functools
  4. Użycie Datetime ze strefami czasowymi
    • 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
  5. Moduły, paczkowanie i alternatywne interpretery i preprocessory
    • Środowiska wirtualne - venv
    • Tworzenie własnych paczek: setup.pysetup.cfg
    • Zarządzanie zależnościami
    • Upload do pypi.orgsdistbdistwheel
    • 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++
  6. Serializacja i bazy danych
    • 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 - SQLAlchemyDjango ORM
  7. Programowanie obiektowe
    • Dziedziczenie i kompozycja klas mixin
    • Przeciążanie operatorów
    • Mechanizm klas danych - dataclasses
    • Pola i metody statyczne - staticmethodclassmethod
    • 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 - setattrgetattrhasattr
    • Descriptor
    • String formatting - __str__()__repr__()__format__()
  8. Konstrukcje języka Python ich działanie, gotowe rozwiązanie i implementacja własnych
    1. Wzorce projektowe
    • 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
  9. Przetwarzanie równoległe
    • Wieloprocesowość - multiprocessing
    • Wielowątkowość i model Worker - threading
    • Komunikacja międzyprocesowa i międzywątkowa
    • Mechanizmy blokujące - lock
    • Kolejki - queuedeque
    • Programowanie asynchroniczne - asyncio
  10. Jakość oprogramowania, dobre praktyki, testy i deployment
    • Statyczna analiza kodu źródłowego - pylintpylamasonarlintpyflakes
    • Standard programowania PEP8, PEP20 i dobre praktyki - pycodestyle
    • Testy jednostkowe - doctestunittest
    • Logowanie zdarzeń i informacje ostrzegawcze - loggingwarnings
    • Print formatting i interpolacja zmiennych - printpprint
    • Profiling, mierzenie złożoności cyklometrycznej, obliczeniowej i pamięciowej
    • Jak wdrożyć powyższe techniki w proces CI/CD
    • Deployment - DockerDocker-compose
    • ReStructuredText i dokumentacja - sphinx
  11. (opcjonalne) Programowanie HTTP
    • 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

Pytania?

* Wymagane.


Konsultant on-line
Skorzystaj z usług naszego konsultanta on-line.
Naciśnij przycisk ‘Skorzystaj’ aby przejść do okienka czatu
Kontakt
ul. Nowogrodzka 62c
02-002 Warszawa
Telefon +48 22 2035600
Fax +48 22 2035601
Email