Advanced Python

Location: Portland 252
Average rating: ***..
(3.42, 19 ratings)

Have your Python skills have hit a plateau? Come learn from Python core developer and consultant Raymond Hettinger about how to move up to the next level. In this tutorial we focus on what you need to know to say that you’re truly mastering the language.

In Python 3, you can no longer ignore encoding issues that were glossed over in Python 2. Take one hour to develop a solid foundation in Unicode, how it is transformed in and out of various encodings, and how to exchange data with the outside world (internet, email, disk storage, operating systems, and web-servers):

  • What is Unicode? What is the distinction between bytes and text?
  • Popular encodings: ASCII, Latin-1, UTF-8, UTF-32, …
  • Detecting encodings, encoding metadata, byte order marks, surrogate pairs, bidirectional text
  • How to store binary data in JSON
  • Combining characters, equivalence classes, normalization, equivalence classes, character properties, and the Unicode character database.
  • Interaction with outside world
  • Update to the WSGI specification

Spend another hour to get a solid footing with Python’s more advanced features:

  • Context managers are starting to pervade the language. Learn to create and use them.
  • Metaclasses and class decorators make it easy to perform some high level tasks that would be difficult or unavailable in other languages
  • Two-way generators make it possible to implement advanced design patterns like the Trampoline. See how they can be used to make asynchronous programming much more readable and controllable than older techniques using fragmented event handlers. This technique makes the business logic much more transparent.
  • Get an introduction to descriptors and how they unify and explain the language.

Abstract base classes represent a new alternative to duck typing. Learning about them can deepen and unify your knowledge of the language:

  • What is an abstract base class
  • Look at the new hooks in isinstance() and issubclass()
  • Examine MutableSet in detail
  • Learn to take advantage of the mixins
  • Simulate a built-in type using registration
  • Write your own ABCs

Raymond Hettinger


Raymond Hettinger is long-standing core developer for the Python Language and has created many of its features including itertools and sets. He is a board member for the Python Software Foundation and editor of an upcoming Python community book.

Comments on this page are now closed.


Elyse Grasso
07/29/2011 2:18am PDT

rushed, poorly organized, No useful slides, though code snippets may be useful Comments seemed designed to discourage use of standard python features—why should I use the language if key sections are not recommended by an expert?

Picture of Christopher Neugebauer
Christopher Neugebauer
07/27/2011 4:54am PDT

Great material, learnt a lot during it. Plenty of opportunity and time to work through exercises (and the level of hand-holding here was very appropriate).

Doug Carter
07/25/2011 8:56am PDT

Raymond, Great tutorial! Will the slides be available online somewhere after the session?