I have some pasta I wrote a while ago about intro materials for people learning python, I don't know why I'm bothering to mention that, maybe I don't want it to seem like I'm trying to hard? W/e, here it is:
A while ago I was asked to recommend an introductory text for Python for a non-programmer and ended up in an argument with another dude about what were mandatory topics and which up to date materials covered them best. Since then I've talked to a fair number of people learning Python as a first language and what they were using to do it, the present state of things is a lot different (and I would argue better) than when I was learning the language. At present it seems the three most popular choices are Shaw's Learn Python the Hard Way, Pilgrim's Dive into Python, and the codecademy python interactive tutorial thing. Of those three I think Dive into Python is far and away the best, both by inspection and empirically (although based, admittedly, upon a small sample).
Shaw's book is the easiest to pick apart. It doesn't really teach python, it teaches you how to be a dogmatic C apologist who happens to be writing code in python. Most of the idiom and elegance of the language is sacrificed to Shaw's technical religion inherited from an older era. Just read the chapter where he covers inheritance, he spends more time trying to sell you on his inheritance-is-bad (mind, he's literally talking about all classical inheritance here, not just multiple inheritance). His didactic style does have something going for it however, which is accessibility. A lot of people, somewhat ironically, find the Hard Way to actually be one of the easiest introductions there is. Few people get stuck at any point, and that's not simply due to omissions of difficult subjects, Shaw seems to have an actual talent for explaining difficult subjects to novices.
The codecademy thing is harder to compare with the book format. People seem to like it but it never gets to anything very advanced. I'm not personally convinced that the format is really conducive to useful learning, retyping stuff in the sidebar seems like a recipe for magical thinking, and this is what I've found in people who count codecademy as their only/primary learning material. I saw Shaw give a talk once about how CS education can be too focused on concepts and not sufficiently focused on the mechanic of programming. I actually thought that was a reasonable claim, but codecademy goes in the opposite direction. Maybe in tandem with a little more heady material it makes sense, but as it stands it seems better for memorizing syntax than learning a language.
Dive Into Python is the popular offering that I'm going to champion. As the name suggests there's a focus on example based learning and writing code. The early chapters really leverage python's REPL well which is one of its greatest strengths as a learning language, there's a lot of encouragement to experiment with concepts due to the format. Some people have called the book rushed. I don't agree, but I do think it guns to get readers out of the toy-program zone pretty fast, the 8th chapter covers pulling data from the internet and HTML parsing. It also gives fair coverage of OOP (considering the language) pretty early on. In my experience Dive gives the most idiomatic introduction to the language and people who count it among their learning materials tend to fit best within the Python community (i.e. they're not like Shawites who are afraid of an object in an OOP language).
There's one final book which impressed me on the strength of the couple of chapters I've read out of it, which is Downey's Think Python. I've never actually met anyone who used this book to learn the language but the subjects covered in the TOC look impressive. It gives the most computer science coverage I've seen in an intro text (the subtitle is "How to Think Like a Computer Scientist"), recursion is covered early, mutability and immutability isn't glossed over for ease of explanation and it isn't afraid of OOP, even if it does delay coverage until late in the book. I don't know how beginners would take to it, I suspect there might be too much information too fast to be a first programming book. But if that's not the case, or if it was and someone white knuckled through it, then I think the actual material there, potential pedagogical issues aside, is better than any other Python book I'm aware of.