box Although Python is an easy to learn and powerful programming language as it is known in common parlance, there is nevertheless need of a good introduction and tutorial on the Python language.

Why yet another documentation and tutorial on Python? Aren't there enough websites with tutorials and books dealing with Python? Isn't there already everything said about this great programming language?

These were the questions which came to our mind, when we started this website in June 2010. Yes, there are lots of tutorials and introductions, but we wanted to present a different approach, with other - more interesting - examples, better explanatory diagrams and so on. We had a lot to build on, above all the longstanding experience of Bernd Klein as a computer scientist and Python lecturer. Actually, this online course is based on the material from the classroom training courses of Bodenseo and his book on Python.

Online Course

You will find a complete introduction into Python in our online tutorial:

Further Topics


October 2019:
I added a new chapter to the Pandas Tutorial: Replacing Values in DataFrames and Series

September 2019:
I reshaped most of the chapters of my Matplotlib Tutorial:

August 2019:
It was long overdue. Finally we have a chapter on pytest

Juli 2019:
I wrote a new chapter with an extensive example of multiple inheritance in Bursa and Istanbul and did the final touches on a train from Geneva to Zurich. The underlying ideas have arisen while giving Python courses in various locations. The examples were nearly finished as well. All I did in Turkey was writing the explanatory text.

June 2019:
The Chapter on Inheritance has been nearly completely rewritten. Instead of using the old and boring "employee" and "person" classes, we are now using the Robot, which we have also used in our Introduction into OOP. You will meet the robot Marvin and his new friends "James" and "Dr. Frankenstein"!

April 2018:
A completely new chapter An Extensive Example for Sets was added to our tutorial. This chapter is supplementing the chapter Sets and Frozensets

October 2017:
In our chapter on Polynomials we demonstrate how easily and beautifully a class for the creation and manipulation of polynomial functions can be written in Python.

January - March 2017:
We extended our chapters on Generators and Decorators

May 2016:
New chapter on Decorators. In combination with our chapter on Memoisation and Decorators it belongs to the most extensive treatisises on the topic of decoration à la Python!

December - March 2016:
We wrote four chapters dealing with abstract classes as a tutorial on Metaclasses: August 2015:
We added a chapter on Slots and another about the difference between type and classes.

July 2014:
An introduction into using database interfaces in Python for SQL, MySQL and SQLite

March 2014:
We are currently completely revising the chapter on object oriented programming. It's more or less complete rewrite. The old version dealing with OOP can still be accessed, though we recommend to work through the new ones.
The topic now comprises five instead of previously only one chapter:

Our next Training Courses

Our next open Python classes with Bernd Klein, the author of this website:


Python Intensive Course:
    21st of Aug - 25th of Aug , 2019
Python Course: Level II:
    7th of Nov - 11st of Nov , 2019


Python Intensive Course:
    2nd of Sep - 6th of Sep , 2019
Python Course: Level II:
    16th of Sep - 20th of Sep , 2019
Python Text Processing and Computer Linguistics Course:
    14th of Oct - 18th of Oct , 2019


Python Intensive Course:
    18th of Nov - 22nd of Nov , 2019

Lake Constance / Zurich:

Python Course: Level III:
    7th of Nov - 11st of Nov , 2019
Python Intensive Course:
    18th of Nov - 22nd of Nov , 2019
    2nd of Dec - 6th of Dec , 2019

Munich / München:

Python Intensive Course:
    21st of Aug - 25th of Aug , 2017


Python Course: Level II:
    2nd of Dec - 6th of Dec , 2019


Python Intensive Course:
    19th of Aug - 23rd of Aug , 2019

Vienna / Wien:

Python Course: Level II:
    7th of Nov - 11st of Nov , 2019
Python Intensive Course:
    11st of Nov - 15th of Nov , 2019

A Course is not a Course

The question is ambiguous. First we want to explain, why this website is called "A Python Course". This website is seen all over the world and the expression "course" has varying meanings in the English speaking world. Both in the United States and Canada, a course is a teaching unit, which might last e.g. one academic term. The students normally get a grade or some academic credit for attending the course, usually after having passed an exam.

In the United Kingdom and Australia the term "course" usually defines the complete programme of studies required to complete a major or a study path leading to a university degree. The word "unit" is used in the UK to refer to an academic course in the North American sense.

On the one hand, we had the US and Canadian sense in mind: Our Python is one teaching unit and when you have successfully passed it, you are capable of programming in Python. On the other hand, we had the original meaning of the word in mind: A "course of instruction" as it might be used in book titles like "A Course in Programming Python".