Practical Python

An introduction to practical programming with Python for programmers. A three day course. This is a course for people with programming experience but little or no knowledge of Python. This course takes developers through the basics of Python and up to an intermediate level, able to understand and program with Python for real world applications and scripting.

This course is based on the course Practical Python by David Beazley


  • Introduction to Python. An introduction to the Python interpreter, core language features, and basic datatypes. By the end of this section, you’ll be able to read files and perform simple calculations.
  • Working with Data. A deeper dive into how to represent and manipulate data structures. By the end of this section, you will be writing programs that read data and perform more significant kinds of calculations involving mapping, filtering, index building, and data joins.
  • Program Organization, Functions, and Modules. The problem of organizing larger programs into functions and modules is described. You’ll write a useful library function, learn how to write executable scripts, and apply these concepts to your earlier work. Common standard library modules are also introduced.
  • Classes and Objects. An introduction to object-oriented programming with a focus on using objects to make code more general and extensible. Covers the basics of the class statement, data abstraction, code reuse via inheritance, and ways to objects play nice with the rest of Python using special methods.
  • Inside the Python Object System. A brief look at how objects are implemented under the hood in Python with an eye towards some of the issues that arise in designing classes (e.g., encapsulation of internals, controlling behavior, etc.).
  • Iterators and Generators. Covers the iteration protocol, iterable objects, generators and generator expressions. You’ll apply this knowledge to the problem of setting up data processing pipelines–a particularly effective core organization technique for addressing a wide range problems such as processing large datafiles, handling data streams, and more.
  • Some Advanced Topics. An assortment of more advanced features you might encounter in Python programs. Includes variable argument functions, anonymous functions (lambda), closures, decorators, static and class methods.
  • Testing, Debugging, and Software Development Practice. This section discusses many isses that are considered important to day-to-day Python software development. This includes program testing using the unittest module, logging, and effective use of assertions. The Python debugger and profiler are also briefly described.
  • Packages. A discussion of how to take larger programs and organize them into a package structure. Concludes with some information on installing third-party packages and preparing your own code for installation.