Python is a programming language I like quite a lot. Its home is at http://www.python.org, you can find the fine documentation at http://docs.python.org. An excellent list of howtos/guides to get started can be found here.
If you are a non-programmer, fear not! "How to Think Like a Computer Scientist" is a good introduction to programming, it also happens to be free! Tutorials, books, essays and so on more specific to python can be found on the BeginnersGuide/NonProgrammers wiki page.
Interesting pages on python
Here is a list of pages well worth reading if you want to find out more about python. Not all of them are exclusively concerned with python, quite a few of them also cover more general "good practices" when it comes to software
Software Carpentry -- Read it! Especially if you are new to programming. Do not listen to your supervisor or teacher, read this first before you get spoilt! It covers basic things like the shell, unit testing and teamware. All its references are clickable so you can easily find out more.
Advanced software carpentry -- a class taught by Titus Brown at Lawrence Livermore National Lab. It covers lots of general "good practices" and also some "idiomatic" python.
SimplePrograms -- Progressively harder python programs, starting from a single line
Generator Tricks -- Good intro to generators and iterators in python. Remember why pipe or | is the most useful symbol in the shell? Here is an example how to use generators to make something similar in python, with a nice example of how to make a "processing pipeline" for an apache log file.
Introduction to command line utilities written in python, Creating Agile Unix Command Line Tools With Python (Using Subprocess, Optparse, Doctest and more) by Noah Gift.
Python and the OS -- Explaining the basics of how to interact with files and the operating system in python.
Interesting Tools
A little list of useful "tools" for Pythonistas.
pychecker -- if you think your code does not have any bugs in it, run this!
Bicycle Repairman -- refactoring python style, most of the discussion happens on the wiki.
Useful Tools
Things that people use in the real world to get real world problems solved.
SciPy -- scientific tools for python, uses BLAS and LAPACK for the heavy lifting.
PyX -- high quality (and very pretty) plotting and drawing for Python. It uses LaTeX, so you can harness its power for labels.
processing -- if you need shared objects(like when using threads) but want to use processes use processing. It follows the threading.Thread interface very closely.
Mark Lyons´ gmail script -- importing (old) emails into gmail.
IronPython, an implementation of Python for .Net and Jython, python running in a java vm.
Python comes with threee profiling packages, which one should you choose? Read Brian Beck's The state of Python profilers in two words. Summary: use cProfile always.
Thinking pythonically
Learn to Code Like a Pythonista, a very nice little guide about all things considered pythonic and what is considered not so pythonic. It is a long list of things, read and apply with common sense.
If you do not know why the following happens
1 def f(a, L=[]):
2 L.append(a)
3 print "L=",L
4
5 f(1)
6 L= [1]
7 f(2)
8 L= [1,2]
9 f(3)
10 L= [1,2,3]
then read a story about three friends called John, Pierre and Antonio. It also explains why things like N = N + 1 work.
A more in depth discussion can be read on How to think like a Pythonista, it even has pretty ASCII art in it.
Snippets
Slight twist on ReRaising exceptions, catch them in one place an raise in a different. Useful for worker threads for example.
Related pages on CategoryPython.
