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 | a) połówki: 5 dni po 4 godz. zegarowe (z przerwami) lub b) pełne dni: 3 dni po 7 godz. zegarowych (z przerwami) |
Forma szkolenia | warsztatowa (70% ćwiczenia / 30% wykład) |
Logistyka | a) online lub b) 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 | do 10 uczestników |
Język szkolenia | polski, angielski lub oba naraz w ramach jednego zlecenia |
Plan szkolenia
- Advanced Tooling
- Multiple Python Installations
- Common Caveats with Python Installation on Windows (i.e. Python not on %PATH%)
- IDEs (Integrated Development Environments)
- Overview of Most Important IDEs (PyCharm, Visual Studio Code with Python Plugin and Jupyter Notebook)
- Using Visual Studio Code: Program Layout, Installing Python Plugin, Accessing Terminal, Changing Default Terminal, Turning On Auto-Save etc.
- IPython
- 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.
- Version Pinning
- pip Package Manager and PyPi Repository
- Isolated Python Installations with virtualenv
- Anaconda Distribution
- conda Package Manager and Anaconda Repository
- Isolated Python Environments with conda
- Anaconda vs „Pure” Python Installation
- conda vs pip
- Python Releases
- Python 2 vs Python 3
- Main Differences between Python 2 and 3
- Porting Python 2 to 3
- Python Documentation
- PEP8 for Formatting Rules
- Functions
- Positional and Named Arguments
- Returning Multiple Values
- Default Values
- Default Value Trap
- Lambdas
- Sorting by Key
- Global and Local Scope
- Global Keyword
- *args in Function Signature, Function Call and Other Places
- **kwargs in Function Signature, Function Call and Other Places
- Positional Only Arguments
- Function Annotations
- Introduction to Static Typing with mypy
- Nonlocal Scope and nonlocal Keyword
- callable Function
- Introduction to Nested Functions and Closures
- Decorators
- Decorator Syntax, Definition and Usage
- Simple Decorators for Registering Functions
- Nested Functions
- Closures
- Non-parametrised Decorators Delegating to the Decorated Function
- Class-based Implementation of the Above
- Proper Argument Passing
- Parametrised Decorators with Three Nested Functions
- Class-based Implementation of the Above
- Decorating Methods
- Decorating Classes
- Template Method Design Pattern as one of the Use Cases
- Decorator Use Cases
- Intermediate Object Oriented Programming (we skip easier topics if the group is advanced enough)
- __str__ vs __repr__
- __str__ Method vs str() Function
- Classes Imitating Functions with __call__ Special Method
- Encapsulation – Interface vs Implementation
- Protected Attributes
- Private Attributes
- Read-Only @property
- Read-and-Write @property
- Introducing Encapsulation to an Existing Class without Breaking the Interface with @property
- Variable Annotations
- Dataclasses: Usage, Default Values, Default Values Trap, Default Value Factory, Fields Customisation, __post_init__
- Introduction to Single Inheritance
- Attribute Lookup Mechanism
- Code Reusage with Inheritance
- Method Overloading
- super()
- Advanced Object Oriented Programming
- Special Methods Recap
- object Class
- defaultdict Data Structure
- Inheriting from Builtin Classes, i.e. Data Structures
- @classmethod
- Alternative Constructors with @classmethod
- @staticmethod
- Descriptors
- Bound vs Unbound Method
- Slots
- Including __dict__ in Slots
- Abstract Base Classes
- Multiple Inheritance: Fundamentals, MRO (Method Resolution Order), Diamond Problem, super() Behaviour
- Mixin Classes
- Metaclasses: type Metaclass, Writing Your Own Function-based and Class-based Metaclasses, Use Cases, Simpler Approaches
- Iterators
- Iteration Protocol
- Iterable vs Iterator
- Class-based Implementation of One-Time Iterable
- Class-based Implementation of Reusable Iterable
- Generators (only in 5 days-long version)
- Generators and yield Instruction
- Iteration over Generators
- Generators vs Iterators
- Generator-based Implementation of One-Time Iterable
- Generator-based Implementation of Reusable Iterable
- Passing Data to a Generator
- Introduction to Coroutines
- Advanced Code Organisation
- Modules
- Three Import Styles
- Renaming in Imports
- Import vs Execution and __name__ Variable
- Module Search Order
- sys.path List
- PYTHONPATH Environment Variable
- Packages
- Packages Initialisation
- __init__ Files
- Relative Imports
- Packaging and Publishing Python Code (only in 5 days long version)
- requirements.txt
- setup.py
- PyPI
- Wheel Format
- Packaging Python Projects with setuptools and Generating Distribution Archives
- Semantic Versioning
- twine for Automating Publishing Python Packages
- Testing with pytest
- What Testing is for?
- Overview of Available Frameworks (unittest vs pytest vs doctest)
- pytest Fundamentals
- Launching Tests
- Fail Fast Mode (-x Switch)
- Printing Local Variables (-l Switch)
- Quiet Output (-q Switch)
- Testing both Happy and Sad Paths
- Testing Edge and Corner Cases
- Fixtures
- Unique Temporary Directory for Test Run
- Fixtures Scopes – Sharing Fixture Instances between Tests
- Fixture Dependencies
- Fixture Finalisation
- Grouping Tests into Classes
- Skipping Tests
- Parallel Programming (only in 5 days long version)
- threading Module
- Creating, Starting and Joining Threads
- Producent and Consument Pattern
- Communication via Queues
- Daemon Threads
- Proper Threads Starting and Joining
- concurrent.futures Module
- pool.map
- pool.submit
- Global Interpreter Lock
- Parallelisation of IO Operations vs Computations
- ThreadPoolExecutor vs ProcessPoolExecutor
- Measuring Time Execution
- Debugging Multithreaded Programs in PyCharm
- Regular Expressions (only in 5 days long version)
- Idea of Regular Expressions
- Limitations
- re Module
- re.search() vs re.match()
- re.findall()
- Pattern Compilation
- Making Long Patterns more Readable with re.VERBOSE
- Extracting Data with Unnamed Groups and Named Groups
- Matching to the Beginning and End of String (^ and $)
- Optional Elements (?), One-or-More Repetition (*) and Zero-One-or-More Repetition (*)
- Advanced Repetition with {}, {n,}, {,n} and {n,m} Syntax
- Alternative with [] and (a|b) Syntaxes
- Character Groups with [a-z]
- Negation with [^]
- Character Classes: \d, \D, \s, \S etc.
- Escaping
- Syntax Cheat Sheet
- Processing Files with Regular Expressions
- Using and Creating REST APIs (only in 5 days long version)
- Recap of JSON, JSON Data Types, Loading and Dumping JSON in Python
- Using Postman for Accessing Web APIs
- YAML Format
- Loading and Dumping YAML Format
- JSON Schema
- Validation with jsonschema
- Loading JSON to Your Own Classes with dataclasses-jsonschema
- Flask Web Application Structure
- Starting and Stopping Flask Development Server
- flask_restful Library
- Miscellaneous (only in 5 days long version)
- Persistence with Pickle
- Working with Files and Directories
- Launching and Controlling Subprocesses in a Blocking Way
- Launching and Controlling Subprocesses in a non-blocking Way
- Reading and Writing CSV Files with builtin csv Module
- Reading and Writing CSV and Excel Files with pandas
Przebieg współpracy
- Formularz. Wypełniasz formularz na dole strony.
- Bezpłatna konsultacja. Umawiamy się na bezpłatną i niezobowiązującą rozmowę online, która powinna zamknąć się w 50 minutach. Od pierwszego kontaktu obowiązuje pełne dochowanie poufności, w razie potrzeby możemy zacząć od podpisania NDA. Celem tej rozmowy jest dokładne omówienie Twojej sytuacji i potrzeb, tak abyśmy mogli w kolejnym kroku przygotować dla Państwa rozwiąznaie.
- Propozycja rozwiązania + kolejna konsultacja. Po konsultacji analizujemy Państwa sytuację i przygotowujemy indywidualną dla Państwa propozycję rozwiązania (szkolenie lub/i doradztwo). Tą propozycję omawiamy podczas kolejnej bezpłatnej konsultacji.
- Formalności. Podpisanie umowy i dokonanie płatności (przedpłaty). Termin szkolenia rezerwujemy z chwilą dokonania płatności.
- Próbka szkolenia. W razie potrzeby możemy poprzedzić główne szkolenie 60-minutową próbką szkolenia, aby mieli Państwo absolutną pewność, że warto współpracować.
- Szkolenie lub/i działania doradcze.
- Wsparcie poszkoleniowe – w ustalonym indywidualnie zakresie.
Opinie o trenerze

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.

Well prepared training and reasonably passed knowledge, thanks to which we develop better services.
Arkadiusz Baraniecki
Infrastructure Team Manager at allegro.pl

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.