Python zaawansowany

O szkoleniu

Cele szkolenia

  • Kształcenie umiejętności i rozwijanie wiedzy dotyczącej zaawansowanego programowania w języku Python
  • Konsolidacja wiedzy i uzupełnienie braków w kompetencjach w zakresie szkolenia
  • Pogłębienie znajomości mechanizmów i idiomów języka Python
  • Nauka refaktoryzacji i pracy z debuggerem w środowisku IDE
Dlaczego warto wziąć udział?

Zalety

  • Zajęcia prowadzone są przez doświadczonych praktyków, którzy na co dzień stosują prezentowane techniki i narzędzia
  • Na zajęciach stosowane są otwarte rozwiązania
  • Szkolenie porusza zagadnienia związane z tworzeniem i rozwijaniem aplikacji, z użyciem biblioteki standardowej oraz szkieletów aplikacyjnych (ang. framework)
  • W trakcie ćwiczeń wykorzystywane są przykłady zbliżone do rzeczywistych zastosowań i promowane są praktyki tworzenia łatwego w utrzymaniu kodu
  • Praktyka przed teorią - wszystkie szkolenia technologiczne prowadzone są w formie warsztatowej. Konieczna teoria jest wyjaśniana na przykładzie praktycznych zadań
  • Konkretne umiejętności - w ramach każdego szkolenia rozwijamy praktyczne umiejętności związane z daną technologią i tematyką
  • Nauka z praktykami - wszyscy trenerzy na co dzień pracują w projektach, gwarantuje to dostęp do eksperckiej wiedzy i praktycznego know-how
Kto powinien wziąć udział?
  • Średnio zaawansowani i zaawansowani programiści, posługujący się językiem Python
  • Architekci rozwiązań aplikacyjnych w języku Python

Wymagania

  • Umiejętność programowania w języku Python oraz znajomości podstawowych struktur danych
  • Znajomość koncepcji programowania obiektowego
  • Umiejętność posługiwania się wybranym środowiskiem IDE, dedykowanym dla języka Python
  • Ogólna znajomość biblioteki standardowej dla języka Python

Program szkolenia

Wprowadzenie

  • Zadania określające poziom grupy
  • Zmiany w najnowszych wydaniach Python

Assingment Expression

Typing

  • Typy podstawowe
  • Sekwencje i mapy
  • Funkcje
  • Obiekty i metody
  • Statyczna analiza typów - mypy
  • Transpilacja kodu Python do C i kompilacja

Dataclasses

  • Definicja i składnia
  • Zagnieżdżone dataklasy
  • Postinit, (nie)mutowalne atrybuty, field
  • Parametry, helpery, dziedziczenie, introspekcja

Paradygmat obiektowy

  • Atrybuty: mutowalność, pola instancji i klasowe, modyfikatory dostępu, slots
  • Metody: modyfikatory dostępu, metody statyczne, metody klasowe
  • Dziedziczenie: wzorce, kompozycja, mixin, problemy, przeciążanie, super, MRO
  • Obiekty: relacje, wartość i tożsamość, konstuktor new i init
  • Klasy: dynamiczne tworzenie klas, metaklasy
  • Dobre praktyki: S.O.L.I.D.

Przeciążanie operatorów:

  • Lewe, prawe, inkrementacji
  • Numeryczne, binarne, porównania
  • Akcesory

Protokoły

  • Polimorfizm: interfejsy, protokoły, klasy abstrakcyjne
  • Wzorce: Context Manager, Iterator
  • Property: setter, getter, deleter
  • Refleksja: setattr, getattr, hasattr, delattr
  • Deskryptory: set, get, delete, set_name

Paradygmat funkcyjny

  • Wyrażenia Lambda,
  • Zakresy funkcji
  • Czyste funkcje (pure functions)
  • Rekurencja
  • Niemutowalne struktury danych
  • Funkcje wyższego poziomu i przejrzystość referencyjna
  • Przestrzenie nazewnicze i atrybuty funkcji, callable
  • Domknięcia (closures)
  • Wzorce: callback, closure, maybe, some, map-reduce
  • Moduł Functools

Dekoratory

  • Rodzaje dekoratorów i przykłady zastosowania
  • Dekoratory funkcji, klas, metod
  • Dekoratory funkcje, dekoratory klasy, dekoratory metody
  • Dekoratory z wrapperami funkcyjnymi i klasowymi
  • Dekoratory z argumentami i bez argumentów
  • Dekoratory w bibliotece standardowej

Zagadnienia wydajnościowe i optymalizacja

  • Notacja wielkiego-O, złożoności, optymalizacja
  • Microbenchmarking: wydajność wbudowanych typów danych
  • Profiling: wyszukiwanie wąskich gardeł w programie
  • Kompilacja kodu Pythona do bibliotek współdzielonych

Współbieżność

  • Modele współbieżności
  • Kolejki
  • Komunikacja międzyprocesowa i międzywątkowa
  • Mechanizmy blokujące
  • Wprowadzenie do programowania wielowątkowego
  • Wprowadzenie do programowania wieloprocesowego
  • Wprowadzenie do programowania asynchronicznego

Czas trwania

5 dni (40h)

Prelegenci

Mateusz Pabiś

Matt Harasymczuk

Terminy i miejsca

Zapoznaj się z aktualnymi terminami tego szkolenia bądź zapisz na powiadomienia o nowych terminach.

Wymagany komputer z dostępem do internetu.
Wymagany komputer z dostępem do internetu.

Rejestracja

Cena standardowa
za osobę
3 950
+23% VAT
Cena zawiera:
  • udział w zajęciach
  • materiały szkoleniowe w wersji elektronicznej
  • certyfikat uczestnictwa
Zapisz się
FAQ

Najczęściej zadawane pytania

Prosimy o przejście do sekcji Zapisz się, aby wypełnić formularz zgłoszenia w wydarzeniu. Po jego wysłaniu organizator skontaktuje się celem potwierdzenia przyjęcia zgłoszenia i przekazania szczegółów organizacyjnych.

Podczas wypełniania formularza rejestracji zaznacz opcję "Oświadczam, że udział będzie finansowany ze środków publicznych, proszę o wystawienie faktury z zerową stawką VAT."

Jeśli potrzebujesz zarejestrować organizatora w wewnętrznym systemie zamówień możesz zrobić to na dwa sposoby. W trakcie wypełniania zgłoszenia w polu Uwagi przekaż tą informację - opiekun szkolenia skontaktuje się w celu dopełnienia formalności. Możesz to również zrobić samodzielnie z użyciem poniższych danych:
  • Nazwa firmy: Sages Sp. z o.o.
  • Ulica i nr: ul. Wąwozowa 11
  • Kod pocztowy: 02-796
  • Miejscowość: Warszawa
  • Numer NIP: 1132737407

Najszybszym sposobem kontaktu z organizatorem i uzyskania dodatkowych informacji jest wypełnienie formularza kontaktowego. Możesz też zadzwonić do organizatora.
Kontakt

Masz pytania? Napisz do nas

Wypełnij formularz

Uzupełnij pole
Uzupełnij pole
Wybierz termin wydarzenia
Uzupełnij pole
Uzupełnij pole
Uzupełnij wiadomość
Przeciągnij plik tutaj lub kliknij, żeby dodać.
Potwierdź, że nie jesteś botem.
Musisz zaakceptować regulamin.

Dane kontaktowe

Sages Sp. z o.o.
02-796 Warszawa, Polska ul. Wąwozowa 11

Organizator

Sages Sp. z o.o.
02-796 Warszawa, Polska
ul. Wąwozowa 11
woj. mazowieckie
Powiadomienia o nowych terminach

Zapisz się, aby otrzymywać powiadomienia o nowych terminach tego wydarzenia!