For rapid prototyping of complex applications---and, often,
the production version.
When you want to leave legible, modifiable, reusable programs
For portability across all the major hardware and software platforms
(Unix, Macs, Microsoft, etc.)
As a ``glue language'' for connecting up the obvious pieces of
a complex solution, such as Web pages, databases, and Internet sockets.
When you want a modern, well-designed object-oriented language.
When not to use Python
For heavily compute-bound applications. Python is an
interpreted language and cannot compete with truly compiled
languages in absolute code efficiency.
As a replacement for highly tuned special-purpose software
such as databases and graphics rendering engines.