With every other language I've had to deal with, it's always felt like the designers were saying, "Yes, we're trying to make your life easier with this language, but these other things are more important." With Python, it has always felt like the designers were saying, "We're trying to make your life easier, and that's it. Making your life easier is the thing that we're not compromising on." (Bruce Eckel)

To get a first impression of Python have a look at the Wikipedia article.


If you want to set up a Python system on your own Windows computer you should download and install the following free components: Alternatively you can install a more or less complete Python distribution like the Enthought Python Distribution or Python(x,y).

On a Linux system you can use the package manager for the installation of these components. Some of them are probably already installed by default.

Not every Python package can be downloaded as a Windows executable installer. However, usually the packages come with a setup.py which you can run with

python setup.py
or you can create an installer with
python setup.py bdist_wininst

Documentation and Tutorials

There are tons of free documentation available online. Some good places to start might be:

Of course there are also many commercial books available. Personally I used "Python in a Nutshell" (O'Reilly).

Coding Standards

Writing code that works is essential, but not enough. If your code is an ugly mess, then nobody else (including yourself after a few months) will be able to understand or maintain it. The first step towards better code is following the standard coding conventions (known as PEP8):

Style Guide for Python Code

A denser presentation together with many essential Python idioms can be found here:

Code Like a Pythonista: Idiomatic Python

I highly recomend this, there is no better way to spend half an hour reading time!

You can use the Pylint package to automatically check your code quality (or at least some aspects of it).


While you can write Python programs with any text editor, it generally pays of to use more sophisticated editors like Emacs.
Another option is the use of a so called Integrated Development Environment (IDE). They are in general quite ergonomic right out of the box. Debugging or managing large projects can be more convenient with these. There are both commercial (e.g. WingIDE, Kommodo) and free Python IDEs (e.g. Eric) available.

Personally I use the very popular Eclipse IDE with the PyDev plugin. This works on all operating systems. The PyDev plugin can also make use of Pylint. There are many more useful Eclipse plugins available, e.g. Subclipse for Subversion support.

Mixed Stuff

Advanced Python Fu

Here are some more advanced Python topics: