Description

This workshop is intended for developers with Python experience. Participants learns how to use more advanced Python features like iterators, generators or metaclasses. They are exposed to collections, unittest and other very useful modules from Python Standard Library.

Course Syllabus

  1. Tooling:
    1. Python Installation
    2. IDE
    3. pip
    4. Ipython
    5. Jupyter Notebook
    6. virtualenv
    7. Data Science Libraries (optional)
  2. Advanced Functions:
    1. Positional and Keyword Arguments
    2. *args
    3. **kwargs
    4. Default Value Trap
  3. Object Oriented Programming:
    1. Class and Instance Attributes
    2. Special Methods
    3. @classmethod
    4. @staticmethod
    5. @property
    6. Descriptors
    7. Single Inheritance
    8. Inheriting from Immutable Datatypes
    9. Multiple Inheritance
    10. Method Resolution Order
    11. Mixins
    12. Metaclasses
  4. Testing:
    1. Basics
    2. Running Tests
    3. SetUp & TearDown
    4. Assertions
    5. Skipping Tests
    6. Subtests (Python 3)
    7. Doctests (optional)
    8. Pytest (optional)
  5. Parallel Programming:
    1. threading Module
    2. Producers and Consuments
    3. concurrent Module
    4. Debugging Multithreaded Programs
  6. Decorators:
    1. Closures
    2. Simple Decorators
    3. Parametrised Decorators
    4. Class-based Implementations
    5. Decorating Methods and Classes
  7. Context Managers:
    1. Use Case
    2. Protocol
    3. Writing Your Own Managers
  8. Collections Module:
    1. namedtuple
    2. queue
    3. defaultdict
    4. Counter
  9. Profiling and Optimisation:
    1. Profiling
    2. Optimisation
    3. Memory Profiling
    4. Builtin Data Structure Operations – Time and Memory Complexity