Dive into Python: http://diveintopython.org/
Both great and free books.
(I'll have to check out the first one)
And library reference: http://docs.python.org/library/index.html
You could use these side by side with any decent university course that you can find online. Here is a link to Caltech's introductory Python course, with exercises posted that ramp up in difficulty while surveying most of the Python basics. http://www.cs.caltech.edu/courses/cs11/material/python/index...
And here is MIT's intro course on Python as well. Theirs includes the solutions too. http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Compute...
O'Reilly's Programming Python is not bad, but it's not a great book, either for beginners or journeymen.
Python in a Nutshell is more suitable as reference book, although I suppose you could use it to learn Python. For a Python reference book, I found David Beazley's Python Essential Reference to be more informative and better organized: http://www.amazon.com/Python-Essential-Reference-Developers-...
As other people have mentioned, Guido's online tutorial is pretty good, and you don't really much else to start programming in Python:
I'm always puzzled by people recommending Mark Pilgrim's Dive into Python. I don't find it a good choice for Python beginners.
I work for a company and was running a research project in air traffic control worth ~$400K. I was the principal investigator. We were going to create a tool that would redesign the airspace boundaries managed by a controller or controller team. At the time, I programmed in C, Awk, and a little Perl. I'd used Python at the command line, but had never programmed in it. I knew however it was the language we needed. I committed to it, and my partner agreed to it. We both learned Python on our own and the project succeeded. It had to succeed. If it didn't, we were in lots of trouble. We had company VPs watching us.
The Learning Python book is superior to the Programming Python book. While both are written with the same author, the Learning book is far more readable.
My favorite ongoing resource today is the documentation that comes with Python. I have a copy of it installed on the Linux box at work, and on my Macs at home. It is hands-down the best quick reference for the language.
With a healthy amount of coding, I've gotten very comfortable with python, although I still feel like I'm not quite utilizing it idiomatically. As such, I've been going through Programming Python ( http://oreilly.com/catalog/9780596009250/ ) - which is very well written, IMO - as well as reading a healthy amount of other people's source code, notably CherryPy ( http://cherrypy.org/ ), since I use it a lot.
If you're experienced with other languages, I'd suggest implementing something like a tetris clone as an exercise in learning the language. If you're only experienced with web-dev (as is often the case these days), I'd recommend implementing a few small web-apps with CherryPy - it's the most "pythonic" "web framework" I've seen so far.
Oh, and keeping an eye on the mailing lists ( http://mail.python.org/mailman/listinfo ), particularly python-list, python-ideas, python-dev, and python-3000, can be very enlightening.
I read the Python tutorial, and I have Python in a nutshell which I find is a great way to look something up and get a pretty good, detailed explanation on it.
'cause I might be "one of those bastards", but I'm not sure. =\
I've also read the "Dive Into Python" book, but that was equivalent to reading a book about an instrument without actually holding or playing one.
Read a bunch, get a project idea, start hacking on it to practice "muscle memory", use reference documentation a lot, go back and re-read -- picking up lots of info you missed the first time, get back to hacking. Keep cycling.
Many moons ago, I distinctly remember reading the 'Programming Perl' book 7 times before I finally felt like I understood what I was doing.
Also I like Googling for "python tricks" as there are many gems hidden just waiting to be discovered. Here are a few examples:
Python Design Patterns:
The folks in #python are also very helpful.
So I just learnt it by writing several simple apps (thanks to django) and subscribing to a whole bunch of blogs to learn tips and tricks incrementally over time.
Really fun and challenging projects from image and audio processing to network programming. Each level is a computing puzzle which you must solve to progress to the next level. Very helpful forum too, which you will be needing since you'd have no idea about the techniques (the relevant python libraries and such) involved at the start.
Found most other details on here:
There's some good online tutorials to ease into some of the trickier details like metaclasses and descriptors.
I was already coding Ruby before this (and some LISP before that) so the whole dynamic language thing was familiar enough I could get away with mostly references. Your milage may vary :)
Python totally changed my world.
here's my setup - http://ideamonk.blogspot.com/2008/11/playing-with-python.htm...
I just wrote a script to getch results of all my batchmates from the college result site... :)
If you know all the programming concepts well - then go with Dive Into Python
After that I started learning Django using the Django docs and http://www.djangobook.com/ and this kind of rounded out the python bits as I went along
Haven't actually made reference to an actual Python book yet
you can do chapter 1 examples with the python basics in the interpreter and go from there. by far the easiest and best programming book I've ever come across.
All the basics in one remarkably short chapter.
of course, you'll have to have an understanding of concepts, like lists for instance. but it's so easy to play around in python you can figure those things out, and how they work on your own.
then use the python cookbook to hack up your own scripts. break them down to simple versions and you'll learn a lot when solving your own problems.
Probably the best complement to the aforementioned tutorials. Dive into Python is good but i hate the examples he makes.