Advanced Python

Advanced Python is a three day hands on course that will take you deeper into the Python programming language and ecosystem. This course will take delegates from beginner level in Python to Advanced Python experts. The course provides a solid overview of the Python language including some low level details essential to working confidently and fluidly with Python. The focus is on practical programming and the skills learned here can be applied in any field where Python is used.

In this course delegates will learn a great deal of Python, from an essential foundation like how assignment works to taking advantage of multicore systems with multiprocessing. Included is netowrking, from REST APIs to socket servers, and an overview of modern data science tools including data handling with Pandas and numpy, visualisation with matplotlib and working with Excel through openpyxl.

A fun excerpt from Advanced Python:

Course Contents

  • A thorough overview of Python and its features
  • A focus on industry best practises and avoiding common pitfalls
  • An in depth understanding of the Python machine and how Python works
  • Understand the full Python object model for advanced object orientation
  • Text processing with regular expressions and Unicode
  • Hidden gems of the Python standard library
  • Working with third party libraries and the Python ecosystem
  • Code organisation and structure for larger systems
  • Working with multiple inheritance and techniques like object composition
  • Best practises for exception handling
  • Functional programming with closures, higher order functions and lambdas
  • Learn powerful language features like decorators, iterators and generators
  • Networking, from working with APIs to lower level sockets
  • An overview of modern data science tools including Pandas, numpy and matplotlib
  • Working with Excel through openpyxl
  • Concurrency with threading and multiprocessing
  • Easy and effective testing with unittest

Text Processing

  • The power of Python strings
  • Understanding Unicode and text in Python
  • Processing semi-structured data with regular expressions
  • Handling binary data with bytes

Advanced Object Orientation

  • The Python object model
  • Inside Python objects
  • Inheritance and multiple inheritance
  • Mixin classes
  • Making upcalls with super
  • The MRO and attribute lookup rules
  • Metaprogramming
  • Operator overloading and the Python protocols
  • Data privacy
  • Properties and descriptors
  • Type checking and duck typing
  • Object oriented theory
  • Object composition

Code Organisation

  • Modules and packages
  • Organising your packages
  • Code refactoring
  • How import works
  • Clean code, design and structure
  • Writing scripts and libraries
  • Best practises for Pythonic code
  • Circular imports

Working with Data

  • The power of the built-in types
  • Understanding data with Python
  • Representing problem domains in Python
  • An overview of data science
  • Pandas, numpy and matplotlib (and seaborn)
  • Work with Excel with openpyxl

Functional Programming

  • Higher order functions
  • Closures
  • Lambdas
  • Partial application
  • Map-reduce

Advanced Language Features

  • Decorators and decorator factories
  • Class decorators
  • Iterators
  • Generators
  • References and mutable objects
  • Inherited decorators with __init_subclass__

Threads and Concurrency

  • Concurrency on modern computers
  • Threads in Python
  • The Global Interpreter Lock
  • Take advantage of multicore with multiprocessing
  • Shared memory with multiprocessing

Modern Approaches to Exception Handling

  • Best practises and common pitfalls
  • Understanding the stack and controlling tracebacks
  • Exception wrapping
  • Logging and debugging
  • Multiple approaches to error handling

Networking

  • The http request-response cycle
  • Making requests
  • REST APIs and the requests library
  • Sockets, tcp servers and clients

Testing and TDD

  • Testing with unittest
  • Test modules and test cases
  • Test discovery, running your tests
  • Test first, TDD
  • Assert methods and testing principles

The Python Ecosystem

  • The Python standard library
  • Develop with virtual environments
  • pip and requirements.txt for project management
  • Using third party libraries
  • Packages and pypi
  • Editors and IDEs
  • Debuggers