Advanced Python

Length: 4 days (32 hours)

Description:This course introduces experienced Python programmers to some of the language’s more advanced features. If you have been using Python for more than six months, and want to understand and explore the more advanced features of the language — making your programs more expressive and powerful — then this course will help you.

This is the course that some of the world’s largest and best-known companies (e.g., Apple, Cisco, SANDisk, and VMWare) invite me to teach, again and again, to help their Python programmers to improve, after they have been using Python for some time.

Besides deep discussions of functional and object-oriented techniques, the course discusses advanced data structures, inner functions, functional programming techniques, a deep dive into Python’s object system, iterators, generators, and decorators, testing, and multiprocessing (processes and threads). The course includes a large number of exercises for hands-on practice, as well as live demos and the opportunity for questions.

Participants receive PDF copies of the slides, files with the answers to exercises, as well as an IPython notebook from all live-coding demos.

This course, like all of my courses, can be given either in-person or virtually. Contact me for availability and pricing, but be warned that my time tends to fill up months in advance.

Data structures

  • Review of basic Python
  • iPython and iPython notebook
  • Advanced data structures

Functions

  • Function objects
  • Parameters including *args and **kwargs
  • Scoping
  • Inner functions

Functional programming

  • Intro to functional programming
  • Comprehensions (list, dictionary, set)
  • lambda and function parameters
  • map, filter,and reduce
  • itertools

Modules and packages

  • Modules and packages
  • Review of basic modules and packages
  • Distributing modules and packages
  • Useful modules to download and use

Development tools

  • Virtualenv
  • Debugging and profiling

Advanced objects

  • Class vs. instance attributes
  • Composition
  • Inheritance
  • Class and static methods
  • Properties
  • Magic methods
  • Multiple inheritance and mixins
  • Descriptors

Iterators, generators and decorators

  • Python’s iteration protocol
  • Creating iterators (and why)
  • Generator functions
  • Generator expressions
  • Decorator classes
  • Decorator functions
  • Context managers
  • Decorators

Threads, processes, and multiprocessing