Informacje o szkoleniu

Główna korzyść: usprawnienie wykorzystania Pythona w Twojej firmie, dzięki czemu developerzy pracują szybciej i tworzą lepszy kod, tzn. taki, który będzie łatwiej, szybciej i taniej utrzymać w przyszłości.

Czas trwania: 3 dni 

Więcej informacji:

  • Liczba godzin: 7 godzin zegarowych dziennie brutto (tzn. razem z przerwami) + indywidualne konsultacje po każdym dniu
  • Forma szkolenia: warsztatowa (70% ćwiczenia / 30% wykład)
  • Logistyka: online lub w siedzibie klienta lub innym wyznaczonym przez niego miejscu, w Polsce lub za granicą w obrębie Europy
  • Zapisy: szkolenie zamknięte – indywidualne zamówienie i dopasowanie dla grupy
  • Wielkość grupy: max 10 uczestników
  • Język szkolenia: język polski lub angielski lub oba naraz w ramach jednego zlecenia

Plan szkolenia

  1. Advanced Tooling
    1. Multiple Python Installations
    2. Common Caveats with Python Installation on Windows (i.e. Python not on %PATH%)
    3. IDEs (Integrated Development Environments)
    4. Overview of Most Important IDEs (PyCharm, Visual Studio Code with Python Plugin and Jupyter Notebook)
    5. Using Visual Studio Code: Program Layout, Installing Python Plugin, Accessing Terminal, Changing Default Terminal, Turning On Auto-Save etc.
    6. IPython
    7. Jupyter Notebook: Installation, Use Cases, Auto-Completion, Displaying Inline Documentation, Restarting Underlying IPython Session, Integration with Matplotlib, Support for Different Kernels, nbextensions, Table of Contents, Exporting Notebooks to HTML and Python Code etc.
    8. Version Pinning
    9. pip Package Manager and PyPi Repository
    10. Isolated Python Installations with virtualenv
    11. Anaconda Distribution
    12. conda Package Manager and Anaconda Repository
    13. Isolated Python Environments with conda
    14. Anaconda vs „Pure” Python Installation
    15. conda vs pip
    16. Python Releases
    17. Python 2 vs Python 3
    18. Main Differences between Python 2 and 3
    19. Porting Python 2 to 3
    20. Python Documentation
    21. PEP8 for Formatting Rules
  2. Functions
    1. Positional and Named Arguments
    2. Returning Multiple Values
    3. Default Values
    4. Default Value Trap
    5. Lambdas
    6. Sorting by Key
    7. Global and Local Scope
    8. Global Keyword
    9. *args in Function Signature, Function Call and Other Places
    10. **kwargs in Function Signature, Function Call and Other Places
    11. Positional Only Arguments
    12. Function Annotations
    13. Introduction to Static Typing with mypy
    14. Nonlocal Scope and nonlocal Keyword
    15. callable Function
    16. Introduction to Nested Functions and Closures
  3. Decorators
    1. Decorator Syntax, Definition and Usage
    2. Simple Decorators for Registering Functions
    3. Nested Functions
    4. Closures
    5. Non-parametrised Decorators Delegating to the Decorated Function
    6. Class-based Implementation of the Above
    7. Proper Argument Passing
    8. Parametrised Decorators with Three Nested Functions
    9. Class-based Implementation of the Above
    10. Decorating Methods
    11. Decorating Classes
    12. Template Method Design Pattern as one of the Use Cases
    13. Decorator Use Cases
  4. Intermediate Object Oriented Programming (we skip easier topics if the group is advanced enough)
    1. __str__ vs __repr__
    2. __str__ Method vs str() Function
    3. Classes Imitating Functions with __call__ Special Method
    4. Encapsulation – Interface vs Implementation
    5. Protected Attributes
    6. Private Attributes
    7. Read-Only @property
    8. Read-and-Write @property
    9. Introducing Encapsulation to an Existing Class without Breaking the Interface with @property
    10. Variable Annotations
    11. Dataclasses: Usage, Default Values, Default Values Trap, Default Value Factory, Fields Customisation, __post_init__
    12. Introduction to Single Inheritance
    13. Attribute Lookup Mechanism
    14. Code Reusage with Inheritance
    15. Method Overloading
    16. super()
  5. Advanced Object Oriented Programming
    1. Special Methods Recap
    2. object Class
    3. defaultdict Data Structure
    4. Inheriting from Builtin Classes, i.e. Data Structures
    5. @classmethod
    6. Alternative Constructors with @classmethod
    7. @staticmethod
    8. Descriptors
    9. Bound vs Unbound Method
    10. Slots
    11. Including __dict__ in Slots
    12. Abstract Base Classes
    13. Multiple Inheritance: Fundamentals, MRO (Method Resolution Order), Diamond Problem, super() Behaviour
    14. Mixin Classes
    15. Metaclasses: type Metaclass, Writing Your Own Function-based and Class-based Metaclasses, Use Cases, Simpler Approaches
  6. Iterators
    1. Iteration Protocol
    2. Iterable vs Iterator
    3. Class-based Implementation of One-Time Iterable
    4. Class-based Implementation of Reusable Iterable
  7. Generators (only in 5 days-long version)
    1. Generators and yield Instruction
    2. Iteration over Generators
    3. Generators vs Iterators
    4. Generator-based Implementation of One-Time Iterable
    5. Generator-based Implementation of Reusable Iterable
    6. Passing Data to a Generator
    7. Introduction to Coroutines
  8. Advanced Code Organisation
    1. Modules
    2. Three Import Styles
    3. Renaming in Imports
    4. Import vs Execution and __name__ Variable
    5. Module Search Order
    6. sys.path List
    7. PYTHONPATH Environment Variable
    8. Packages
    9. Packages Initialisation
    10. __init__ Files
    11. Relative Imports
  9. Packaging and Publishing Python Code (only in 5 days long version)
    1. requirements.txt
    2. setup.py
    3. PyPI
    4. Wheel Format
    5. Packaging Python Projects with setuptools and Generating Distribution Archives
    6. Semantic Versioning
    7. twine for Automating Publishing Python Packages
  10. Testing with pytest
    1. What Testing is for?
    2. Overview of Available Frameworks (unittest vs pytest vs doctest)
    3. pytest Fundamentals
    4. Launching Tests
    5. Fail Fast Mode (-x Switch)
    6. Printing Local Variables (-l Switch)
    7. Quiet Output (-q Switch)
    8. Testing both Happy and Sad Paths
    9. Testing Edge and Corner Cases
    10. Fixtures
    11. Unique Temporary Directory for Test Run
    12. Fixtures Scopes – Sharing Fixture Instances between Tests
    13. Fixture Dependencies
    14. Fixture Finalisation
    15. Grouping Tests into Classes
    16. Skipping Tests
  11. Parallel Programming (only in 5 days long version)
    1. threading Module
    2. Creating, Starting and Joining Threads
    3. Producent and Consument Pattern
    4. Communication via Queues
    5. Daemon Threads
    6. Proper Threads Starting and Joining
    7. concurrent.futures Module
    8. pool.map
    9. pool.submit
    10. Global Interpreter Lock
    11. Parallelisation of IO Operations vs Computations
    12. ThreadPoolExecutor vs ProcessPoolExecutor
    13. Measuring Time Execution
    14. Debugging Multithreaded Programs in PyCharm
  12. Regular Expressions (only in 5 days long version)
    1. Idea of Regular Expressions
    2. Limitations
    3. re Module
    4. re.search() vs re.match()
    5. re.findall()
    6. Pattern Compilation
    7. Making Long Patterns more Readable with re.VERBOSE
    8. Extracting Data with Unnamed Groups and Named Groups
    9. Matching to the Beginning and End of String (^ and $)
    10. Optional Elements (?), One-or-More Repetition (*) and Zero-One-or-More Repetition (*)
    11. Advanced Repetition with {}, {n,}, {,n} and {n,m} Syntax
    12. Alternative with [] and (a|b) Syntaxes
    13. Character Groups with [a-z]
    14. Negation with [^]
    15. Character Classes: \d, \D, \s, \S etc.
    16. Escaping
    17. Syntax Cheat Sheet
    18. Processing Files with Regular Expressions
  13. Using and Creating REST APIs (only in 5 days long version)
    1. Recap of JSON, JSON Data Types, Loading and Dumping JSON in Python
    2. Using Postman for Accessing Web APIs
    3. YAML Format
    4. Loading and Dumping YAML Format
    5. JSON Schema
    6. Validation with jsonschema
    7. Loading JSON to Your Own Classes with dataclasses-jsonschema
    8. Flask Web Application Structure
    9. Starting and Stopping Flask Development Server
    10. flask_restful Library
  14. Miscellaneous (only in 5 days long version)
    1. Persistence with Pickle
    2. Working with Files and Directories
    3. Launching and Controlling Subprocesses in a Blocking Way
    4. Launching and Controlling Subprocesses in a non-blocking Way
    5. Reading and Writing CSV Files with builtin csv Module
    6. Reading and Writing CSV and Excel Files with pandas

Korzyści dla zamawiającego

Jako zamawiający szkolenie otrzymasz:

  1. Analizę potrzeb i wsparcie w doborze szkolenia w postaci rozmowy telefonicznej ze sponsorem szkolenia, HRem, team leadem lub/i uczestnikami szkolenia. Dodatkowo, analiza potrzeb uczestników na samym początku szkolenia pozwala na jeszcze lepsze wykorzystanie czasu.
  2. Możliwość i wsparcie w dostosowaniu szkolenia pod Twoje potrzeby.
  3. Gwarancję poprowadzenia szkolenia przez eksperta, który współpracował m.in. z Google.
  4. Ewaluację szkolenia przez uczestników w postaci elektronicznej ankiety pod koniec ostatniego dnia szkolenia. Wyniki są przesyłane zainteresowanym osobom (najczęściej sponsor + HR).
  5. Prostą komunikację – masz bezpośredni dostęp telefoniczny i mailowy do trenera.
  6. Prosty proces zakupowy – wystarczy jeden telefon lub mail, abyś otrzymał(a) ofertę i aby zarezerwować dla Ciebie termin. Terminy są na wyłączność, nie praktykujemy overbookingu. Wysłanie Purchase Order potwierdza zamówienie.

Klienci, po zobaczeniu efektów tego szkolenia, bardzo często decydują się na inne szkolenia, także dedykowane szkolenia, przygotowywane specjalnie dla nich.

Korzyści dla uczestników

Dodatkowo, w ramach szkolenia uczestnicy otrzymają:

  1. Siedem godzin zegarowych szkolenia każdego dnia brutto, tzn. w tym przerwy.
  2. Konsultacje i doradztwo dla uczestników po każdym dniu szkoleniowym. Nie rozwiązujemy indywidualnych problemów w trakcie szkolenia, skoro rozwiązaniem zainteresowana jest tylko ta jedna osoba. Nie mówimy, że robimy 8 godzin szkolenia, tylko po to aby potem w trakcie szkolenia przeprowadzać indywidualne konsultacje.
  3. Wsparcie poszkoleniowe dla uczestników i sponsora szkolenia, mailowe i telefoniczne.
  4. Instrukcję przygotowania laptopów dla uczestników i, w razie potrzeby, wsparcie telefoniczne, mailowe i Skypowe (chociaż jeszcze nigdy nie było takiej potrzeby). Dzięki temu oszczędzamy czas na początku szkolenia i ruszamy od razu z nauką.
  5. Materiały szkoleniowe zawierające fragmenty kodu, komentarze, ćwiczenia i ich wzorcowe rozwiązania. Materiały są w formie pojedynczej strony internetowej, dzięki czemu uczestnikom jest bardzo łatwo wyszukać interesujący ich fragment. Materiały są dostępne także po szkoleniu. Uczestnicy mogą je także pobrać, aby mieć do nich dostęp offline. Forma materiałów pozwala na dostosowywanie materiałów na bieżąco do potrzeb uczestników, w przeciwieństwie do materiałów drukowanych, które nie pozwalają na np. dodanie komentarzy zasugerowanych przez uczestników.
  6. Środowisko gotowe do wykorzystania po szkoleniu. Nie używamy wirtualnych maszyn, instalujemy wszystko na laptopach uczestników.
  7. Nagranie szkolenia (w przypadku szkoleń online)

Opinie o trenerze

Krzysztof Gębal

Very inspiring training. I really appreciate the way Chris managed to walk us through the complex world of machine learning using Python. Good course materials updated real time. Highly recommend.

Krzysztof Gębal
Finance Director at DNB Bank Polska S.A.

Arkadiusz Baraniecki

Well prepared training and reasonably passed knowledge, thanks to which we develop better services.

Arkadiusz Baraniecki
Infrastructure Team Manager at allegro.pl

Nicolas Leveroni

Chris recently taught a four day class on Machine Learning with Python four our team. The class was very good with the right balance of theory and practice. I cannot think of a better way to give a four day class about such an extensive topic.

Nicolas Leveroni
Head of Krakow Product Control Analytics at HSBC

Więcej referencji znajdziesz tutaj.