Programowanie w Python – poziom zaawansowany

Programowanie w Python– poziom zaawansowany

Szkolenia otwarte

3 900 PLN

- Szkolenie, w którym uczestniczą osoby z różnych firm
- Plan szkolenia taki, jak przedstawiony na stronie
- Małe grupy szkoleniowe, 3-10 osób

Szkolenia zamknięte

Cena ustalana indywidualnie

- Szkolenie realizowane na indywidualne zamówienie
- Termin i miejsce szkolenia ustalamy indywidualnie
- Plan szkolenia dostosowany do potrzeb firmy

O szkoleniu

Kurs ten jest przeznaczony dla osób programujących w Pythonie które chciałyby pójść o krok dalej w tym języku –  z poziomu początkującego/średniozaawansowanego na zaawansowany/ekspercki. Zarówno osoby tworzące oprogramowanie w Pythonie jak i posługujące się nim do szeroko rozumianej analizy i przetwarzania danych, skorzystają z tego szkolenia. Skupia się on na współczesnych konceptach, narzędziach oraz praktykach które są kluczowe do tworzenia wydajnych, niezawodnych oraz łatwych w utrzymaniu rozwiązań wykorzystując Python’a.

Osoby posiadające podstawową wiedzę i umiejętności związane z Python’em powinny bez problemu  zrozumieć treści kursu. Dla osób które dopiero zaczynają programować w Python’ie może być konieczne wykonanie pewnej dodatkowej pracy wstępnej.

Zawartość tego kursu pokrywa zaawansowane i nowe funkcjonalności dostępne w wersji 3.9 Python’a.

Dla kogo jest to szkolenie?

  • Programiści/Developerzy Python
  • Web developerzy
  • Data Scientists
  • Analitycy wykorzystujący Python
  • Naukowcy

Czego się nauczę?

  • Poznasz sposoby na tworzenie odpornego kodu na błędy
  • Nauczysz się dobrych praktyk tworzenia kodu w Python
  • Dowiesz się jak tworzyć moduły I pakietować je
  • Nauczysz się tworzyć dokumentacje dla tworzonych rozwiązań
  • Poznasz zaawansowane narzędzia i obiekty w Python wykorzystywane do tworzenia wydajnego kodu
  • Poznasz zaawansowane aspekty programowania obiektowego w Python
  • Dowiesz się jak tworzyć wydajne oprogramowanie wykorzystujące m.in. przetwarzanie wielowątkowe

Plan szkolenia

Odporność na błędy w Python’ie

  1. Python wiadomości o błędach
    1. Zapobieganie błędom składniowym z Linters – Pylint, Flake8
    2. Badanie tracebacks
    3. Szukanie informacji o błędach
  2. Obsługa błędów
    1. Instrukcje try/except/finally
    2. Zgłaszanie wyjątków – raise
    3. Obiekty wyjątków
      1. Efekty wyjątku
      2. Obsługa wyjątków
      3. Hierarchia wyjątków
    4. Niestandardowe wyjątki
    5. Strategie sprawdzania wyjątków
  3. Ostrzeżenia
    1. Moduł warnings
    2. Kategorie ostrzeżeń
    3. Filtry ostrzeżeń
    4. Generowanie ostrzerzeń za pomocą funkcji
  4. Testowanie
    1. Zasady projektowania oraz testy jednostkowe
    2. Testy jednostkowe – standardowe narzędzia do testowania w Python’ie
    3. Pytest
    4. Imitowanie obiektów za pomocą atrap
  5. Rejestrowanie zdarzeń
    1. Czemu rejestrować?
    2. Moduł Logging
    3. Logger – metody, hierarchia
    4. Formatery
    5. spacingHandlers

Najlepsze Praktyki, Narzędzia i Techniki w Python’ie

  1. Wstęp do najlepszych praktyk przy tworzeniu projektów w Python’ie
    1. Styl kodowania i formatowanie
    2. Strukturyzowanie projektu
    3. Testowanie kodu
    4. Optymalizacja
    5. Dokumentacja
    6. Rejestrowanie zdarzeń
    7. Licencjowanie
  2. Formatowanie kodu
    1. PEP 8 – Wytyczne stylu
    2. Horyzontalne, wertykalne spacjowanie
    3. Black – formater kodu
  3. Konwencje nazewnictwa
    1. PEP 8  – Konwencja nazewnictwa
    2. Z małej czy z dużej litery
    3. Odpowiednia długość nazwy
    4. Wbudowane nazwy
    5. Najlepsze praktyki dla argumentów
    6. Nazwy klas, modułów oraz pakietów
    7. Pylint, flake8
  4. Pythonowy sposób pisania kodu
    1. Wcięcia są znaczące
    2. Łańcuch przypisań i operatory porównania
  5. Trwałość i Serializacja
    1. Zrozumienie trwałości
    2. Serializacja – konwersja pliku na strumień bitów
    3. Dumping i ładowania za pomocą:
      1. JSON
      2. YAML
      3. Pickle
      4. XML
  6. Moduły
    1. Architektura programu w Python
    2. Koncepty planowania modułów
    3. Obiekty modułowe
      1. Instrukcje import i from i ich konsekwencje
      2. Atrybuty obiektów modułu
      3. Moduły wbudowane w Python 3.9
      4. Dokumentacja modułów
      5. Prywatne zmienne w module
    4. Ładowanie modułów
      1. Przeszukiwanie systemu plików
      2. Główny program
      3. Ponowne ładowanie modułów
      4. Importy okrężne
    5. Kompilacja kodu bitowego __pycache__
    6. Scieżka wyszukania modułu w Python’ie
    7. Przestrzeń nazw modułów
    8. Zaawansowane elementy związane z modułami
      1. _X i __all__ – ukrywanie danych
      2. Cechy języka Future z __future__
      3. Zmienne korzystanie z modes __name__ i__main__
  7. Pakiety
    1. Zrozumienie pakietów i modułów
    2. Korzystanie z importów pakietu
    3. Względny kontra bezwględny import, scope, zasady wyszukiwania
    4. Pakiet __init__.py files
    5. Specjalne atrybuty obiektów pakietu
    6. Przestrzeń nazw pakietów
  8. Moduły do pakietowania
    1. PyPA – Python packaging authority
    2. Techniczne wymagania i struktura katalogu
    3. Konfiguracja projektu za pomocą skryptów instalacyjnych, metadaty, manifestu
    4. Zarządzanie zależnościami
    5. Praca z pakietami w budowie
    6. README, DEVELOP, CHANGES
  9. Dokumentacja projektu
    1. Zasady pisania technicznego
    2. Komentowanie kontra dokumentowanie
    3. Podpowiadanie typów
    4. Docstrings
    5. StructuredText
    6. Generowanie dokumentacji w Python’ie
  10. Zarządzanie kodem
    1. System kontroli wersji
    2. Ciągła integracja
    3. Narzędzia dla ciągłej integracji
      1. Jenking
      2. GitLab CI

 Zaawansowane programowanie w Python’ie

  1. Obiekty wywoływalne
    1. Typy obiektów wywoływalnych w Python’ie 3.9
    2. Funkcje jako obiekty pierwszej kategorii
    3. Typy obiektów wywoływalnych zdefiniowanych przez użytkownika
    4. Pakiety związane z programowaniem funkcyjnym
      1. Moduł operator
      2. Moduł functools (zastępstwo dla map, filtrowania i redukcji)
  2. Funkcje
    1. Scope w Python’ie i rozstrzyganie nazw
    2. Globalne i  nielokalne wyrażenia
    3. Lambdy – funkcje anonimowe
    4. Parametry wejściowe
      1. Specyfikacja argumentów wejściowych, pozycyjne, słowa kluczowe
      2. Parametry wyłącznie pozycyjne
      3. Parametry wyłącznie oparte na słowach kluczowych
      4. Zamrażanie argumentów funkcji
    5. Wartości zwrotne
    6. Funkcje rekursywne
    7. PEP 484 – Typy podpowiedzi w funkcjach
      1. Mypy module
      2. typing module
      3. Przydatne typy w adnotacjach
      4. Pozycyjne i zmienna liczba argumentów parametrów – adnotacje
  3. Iterowalne, Iteratory i generatory
    1. Wydajne programowanie z iteratorami
    2. Protokół iteratorów
      1. Instrukcje iter() i next()
    3. Iterowalne kontra Iteratory
    4. Funkcje generujące i wyrażenia
      1. Generator wyrażeń
      2. Funkcja generująca – instrukcja yield()
      3. Metody generujące – send(), throw(), close()
    5. Moduł Itertools – wydajne pętle
      1. Nieskończone iteratory
      2. Terminowanie iteratorów
      3. Kombinatoryczne iteratory
  4. Współprogram
    1. Nowe funkcjonalności języka Python w wersji 3.5
    2. Klasyczne współprogramy
    3. Współprogramy oparte na generatorach
    4. Rdzenne współprogramy
    5. Yield od znaczenia do korzystania
  5. Funkcje wysokiego rzędu
    1. Narzędzia funkcji wysokiego rzędu
    2. Moduł Functools
  6. Dekoratory i Domknięcia
    1. PEP 318 Dekoratory dla funkcji i metod
    2. Kiedy Python wykonuje dekoratory
    3. Implementacja jako funkcje lub klasy
    4. Zagnieżdżone dekoratory
    5. Parametryzacja dekoratorów
    6. Wykorzystanie i aplikacje
  7. Menadżery kontekstu
    1. PEP 3483 – Instrukcja with
    2. Narzędzia modułu Contextlib
    3. Typy menadżerów kontekstu i metody specjalne
    4. Aplikacje i wykorzystywanie menadżerów kontekstu
  8. Elementy współczesnej składni
    1. Python model danych – protokoły języka Python (metody i atrybuty)
    2. Klasa Budowniczego z modułu dataclasses  – redukcja powtarzania kodu
    3. Podklasy typów wbudowanych z kolekcjami
    4. Referencje obiektów, zmienność and recyklowanie

 Programowanie obiektowe w Python’ie

  1. Projektowanie zorientowane obiektowo
    1. Analiza zorientowana obiektowo
    2. Definiowanie obiektów i klas
    3. Określanie atrybutów i zachowań
    4. Kompozycja
    5. Dziedziczenie
    6. Stadium przypadku
  2. Klasy i obiekty
    1. Tworzenie i inicjalizacja klasy
    2. Tworzenie instancji klasy
    3. Metody instancji
  3. ABC – Abstrakcyjne klasy bazowe
    1. Moduł abc
    2. Projektowanie z obiektami wywołalnymi abc
  4. Atrybuty
    1. Deklarowanie i dostęp do atrybutów
    2. __init__ i atrybuty
    3. Specjalne metody dla dostępu do atrybutów
    4. Metoda __getattribute__
    5. Deskryptory
  5. Metody
    1. Specjalne metody
      1. __repr__ i __str__
      2. __format__
      3. __hash__
      4. __new__
    2. Metody klasy
    3. Metody statyczne
    4. Public i Private
  6. Dziedziczenie – kiedy obiekty są podobne
    1. Dziedziczenie klasy
    2. Przeciążanie i metoda super()
    3. Definiowanie __init__() dla klasy dziecka
    4. Wielokrotne dziedziczenie
    5. MRO – Method Resolution Order
  7. Polimorfizm
    1. Przeciążanie operatorów
    2. Metody magiczne

Wysoce wydajne obliczanie z Python’em

  1. Profilowanie
    1. Zasady optymalizacji
    2. Strategie optymalizacje
    3. Profilowanie CPU i pamięci
  2. Optymalizacja
    1. Struktura danych wpływa na złożoność
    2. Kolekcje
    3. Buforowanie
    4. Numba
    5. Cython
  3. Współbieżność
    1. Współbieżność kontra równoległość (strukturyzowanie kontra robienie)
    2. Wielowątkowość
      1. Tworzenie wątków
      2. Stany wątków
      3. Funkcje modułu Threading
    3. Wieloprocesowość
      1. Moduł multiprocessing
      2. Klasa Process
      3. Korzytanie z Pool
      4. Wymieniane danych pomiędzy procesami
      5. Dzielenie się stanem pomiędzy procesami
    4. Programowanie asynchroniczne
      1. Instrukcje async i await w Python’ie
      2. Wielozadaniowość i asynchroniczność I/O
      3. Przykład programowanie asynchronicznego
    5. Futures
      1. Potrzeba dla futures
      2. Tworzenie Futures w Python’ie
      3. Wiele futures

Plan Szkolenia

Plan jest pusty

Instruktorzy


Zapytaj o szkolenie

Jestem zainteresowany/a


 

Zapytaj o szkolenie zamknięte

Jestem zainteresowany/a


 

Zapytaj o szkolenie otwarte
 

Jestem zainteresowany/a


 

Zapytaj o ścieżkę szkoleniową
 

Rodzaj ścieżki:

Preferowany tryb szkolenia:

DziennyPopołudniowyWeekendowy

Podaj wynik działania:


 
Co oferujemy na czas trwania pandemii COVID-19?  Dowiedz się więcej →