ProgramowaniePython

Programowanie w Python – poziom zaawansowany

18 - 24 kwi 2024

Online

4 300,00 zł netto / osobę
Nie pasuje Ci żaden termin? Napisz do nas!
Zapisz więcej osób

Taniej w grupie

  • 3 osoby - 10% zniżki
  • 4 osoby - 15% zniżki
  • 5 osób - 20% zniżki
  • 6 osób - 25% zniżki
  • 7 osób - 30% zniżki
  • 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?

    • Software developers
    • Web developers
    • Data Scientists
    • Analitycy wykorzystujący Python
    • Naukowcy

    Czego się nauczę?

    Po ukończeniu szkolenia uczestnik będzie:

    • Znał sposoby na tworzenie odpornego kodu na błędy
    • Znał dobre praktyki tworzenia kodu w Python
    • Potrafił tworzyć moduły I pakietować je
    • Potrafił tworzyć dokumentacje dla tworzonych rozwiązań
    • Potrafił korzystać z  zaawansowanych narzędzi i obiektów w Python wykorzystywanych do tworzenia wydajnego kodu
    • Znał zaawansowane aspekty programowania obiektowego w Python
    • Potrafił tworzyć wydajne oprogramowanie wykorzystujące m.in. przetwarzanie wieloprocesowe.
    1. Formatowanie kodu
    • PEP 8 – najpopularniejsze wytyczne stylu w Pythonie 
    • Horyzontalne i wertykalne spacjowanie 
    • Automatyczne formatowanie  
    2. Konwencje nazewnictwa
    • Case styles 
    • Nazewnictwo według PEP-8 
    • Odpowiednia długość nazw 
    3. Pythonowy sposób pisania kodu
    • Zen of Python
    • Czemu wcięcia są znaczące 
    • Łancuchy przypisań i porównań 
    4. Dokumentacja projektu
    • Komentowanie a dokumentowanie 
    • Docstrings – najpopularniejsze formaty, narzędzia do łatwego generowania 
    • Type hints a dokumentacja naszego kodu 
    • Automatyczne generowanie dokumentacji  
    5. Moduły
    • Koncepty planowania modułów 
    • Obiekty modułowe 
    • Instrukcje import i from – konsekwencje ich użycia 
    • Atrybuty obiektów 
    • Wbudowane moduły 
    • Dokumentacja modułów 
    • Ładowanie modułów 
    • Przeszukiwanie systemu pliku 
    • Główny program 
    • Ponowne ładowanie modułów 
    • Circular improts 
    • Skompilowany kod bitowy – folder __pycache__ 
    • Przestrzeń nazw modułu 
    • _X i __all__ – ukrywanie nazw przed zaimportowaniem 
    • Przyzwyczajanie się do nadchodzących zmian z modułem __future__ 
    6. Pakiety
    • Pakiety a moduły 
    • Importy względne i bezwzględne 
    • Pliki __init__.py 
    • Przestrzeń nazw pakietu 
    7. Tworzenie pakietów
    • PyPa – Python Packaging authority 
    • Techniczne wymogi i struktura katologu  
    • Zarządzanie zależnościami 
    • Dystrybucja pakietu za pomocą PyPI 
    • Instalacja pakietu lokalnie 
    8. Zarządzanie kodem
    • System kontroli wersji 
    • Praktyczne zastosowanie systemu kontroli wersji na przykładzie Git’a 
    • Rejestrowanie zmian w kodzie – tworzenie commitów 
    • Tworzenie różnych wersji projektu – branching 
    • Cofanie zmian  
    1. Wiadomości o błędach
    • Linter – narzędzie do analizy kodu pod kątem błędów 
    • Analizowanie tracebacks 
    • Szukanie dodatkowych informacji dotyczących błędów 
    2. Obsługa błędów
    • Najpopolarniejsze rodzaje błędów 
    • Instrukcje try/except/finally 
    • Zgłaszanie wyjątków – instrukcja raise 
    • Obiekty wyjątków 
    • Hierarchia wyjątków  
    • Efekty pojawienia się wyjątku 
    • Strategie sprawdzania wyjątku 
    3. Ostrzeżenia
    • Moduł warnings 
    • Kategorie ostrzeżeń 
    • Filtrowanie ostrzeżeń 
    • Generowanie ostrzeżeń 
    4. Testowanie kodu
    • Ogólne zasady testowania 
    • Rodzaje testów 
    • Moduł unittest 
    • Pakiet pytest 
    5. Rejestrowanie zdarzeń
    • Czemu warto rejestrować? 
    • Moduł logging 
    • Logger – metody, hierarchia obiektów 
    • Formatowanie rejestrowanych wiadomości 
    • Logging handlers 
    1. Obiekty wywoływalne
    • Typy wywoływalnych obiektów 
    • Metoda __call__ 
    • Wywoływalne operatory 
    • Moduł functools 
    • Funkcje jako obiekty pierwszej kategorii 
    2. Funkcje
    • Zakres nazw w Pythonie, rozsztyganie nazw 
    • Wyrażenia lambda 
    • Funkcje map, filter i reduce 
    • Parametry wejściowe 
    • Wartości zwrotne 
    • Funkcje rekursywne 
    • Podpowiedzi typów 
    • Pakiet mypy 
    3. Iterowalne, Iteratory i generatory
    • Iteratory 
    • Obiekty iterowalne 
    • Generatory 
    • Funkcje generujące 
    • Moduł Itertools 
    4. Collections
    • defaultDict
    • Counter
    • deque
    • namedtuple
    • UserString, UserDict i UserList
    5. Dekoratory i domknięcia
    • Wzorzec projektowy dekorator
    • Dekorowanie w Pythonie
    • De Dekorowanie funkcji przyjmującej argumenty
    • Zachowywanie informacji o dekorowanej funkcji
    • Łączenie dekoratorów
    • Dekoratory z argumentami
    • Domknięcia
    6. Menadżery kontekstu
    • PEP 343 – instrukcja with
    • Moduł Contextlib
    7. Data classes – klasy dedykowane do przechowywania danych
    • PEP 557 – Data classes 
    • Redukcja powtarzalnego kodu 
    • Integracja z pakietem Pandas 
    8. Trwałość i serializacja
    • Czym jest trwałość w kontekście programowania?
    • Serializacja – konwertowanie obiektu do bitów
    • „Dumping” i „loading” z:
    •  JSON
    •  YAML
    • Pickle
    9. Wyrażenie regularne – moduł re
    • Budowa wyrażeń regularnych
    • Pattern
    • Match
    • find i match
    1. Projektowanie zorientowane obiektowo
    • Analiza zorientowana obiektowo 
    • Klasa – definicja, deklarowanie klas 
    • Obiekt – definicja, tworzenie obiektów 
    • Atrybuty 
    • Metody 
    • Konstruktory klasy – metoda __init__ 
    • Kompozycja 
    2. Atrybuty
    • Class atributes i Instance attributes – różnice i właściwości 
    • Atrybut __dict__ 
    • Prywatne atrybuty 
    • Metody umożliwiające odczyt i modyfikacje prywatnych atrybutów 
    3. Metody
    • Dunder/Magic methods 
    • Metody klasy 
    • Metody statyczne 
    • Prywatne metody 
    4. Dziedziczenie – kiedy obiekty są podobne
    • Dziedziczenie klasy 
    • Przeciążanie  
    • Funkcja super 
    • Wielokrotne dziedziczenie 
    • MRO  
    1. Programowanie gniazd sieciowych
    • Czym są gniazda sieciowe?
    • Bieg zdarzeń w komunikacji pomiędzy gniazdami
    • Komunikacja klient-serwer
    • Implementacja serwera
    • Implementacja klienta
    • Przesyłanie złożonych obiektów za pomocą gniazd sieciowych
    2. Protokół HTTP
    • Zapytania czyli jak działa nasza przeglądarka internetowa
    • Odpowiedzi
    • Pobieranie danych z internetowy API
    • Zapamiętywanie odpowiedzi
    • Zabezpieczenia danych uwierzytelniających
    • REST API
    • Rodzaje zapytań
    • Poprawianie wydajności zapytań
    3. Flask
    • Wstęp do Flask
    • Definiowanie routes
    • Tworzenie API
    • Obsługiwanie zapytań różnego typu
    4. Bazy danych
    • Łączenie się zrelacyjnymi bazami i nierelacyjnymi
    • Wykonywanie zapytań z poziomu kodu
    • ORM – z SQLAlchemy
    1. Moduł Threading
    • Tworzenie i synchronizacja wątków
    • Semafory
    • GIL
    • Zastosowania wątków w Pythonie
    2. Moduł Multiprocessing
    • Procesy, kolejki i Locks
    • Process Pool
    • Wymiana informacji pomiędzy procesami
    3. Moduł ASYNCIO
    • Coroutines, Tasks
    • Queues
    • Pętla zdarzeń
    • Futures
    • Async HTTP requests