Practical Python by Magnus Lie Hetland Review by Craig Banker (cmbanker@gmail.com) This book is good. You should read it. As it is targeted for the "Beginner to Advanced" user crowd, I expected this book to walk the user through the basics of Python before haulin' full speed through some foggy and highly impractical examples. (Yeah baby . show me another implementation of the towers of hanoii). Not this book. I looked to this publication to improve my effectiveness as a python programmer; specifically for, new insights (paradigm surfing), clarification of newer concepts, and some good examples to make the concepts stick. What I found in the book's 557 pages (if you lose the index and appendices), was four themes: getting started (i.e qu'est-ce que c'est en Python?), data structures, abstraction, and project examples. The first two themes were intertwined logically, followed by abstraction and object orientation concepts, then ten projects to glue these concepts together. Getting Started, obviously is geared for the beginner. It more or less covered the very basics of the language such as installation, variables, statements, functions, modules, and other important stuff non-beginners take for granted. After basic orientation, Hetland gently introduced Data Structures (such as strings, lists, tuples, and dictionaries) and illustrated their essence with some neat tricks. I was tempted to skim over this section but forced myself to read it in detail. (and I must admit, re-reading beginner's stuff is something I actively avoid) However, I did find a few twists on the same old things; this made the effort worthwhile. Next, Hetland presented Abstraction in a way that made me reconsider how I looked at those buzzwords (polymorphism, super/sub classing). He clearly demonstrated how abstraction can help a pythoneer manage complexity as well as how truly easy it is to implement. After reading this section, several techniques I see in use in open source projects now make better sense. (I had to fight of the urge to run away and rewrite some of my own code at this point.) He also spelled out some handy rules of thumb for object usage. The final section in the book dealt with program examples. These examples were clear and paralleled real life programming tasks. They ranged from: XML processing, to network sockets, to game development using pygame. Hetland framed each example in proper context : the problem to solve, specific goals, some handy tools, and a couple of successively refined developments. This book properly blends programming concepts with design concepts (abstraction) and cements its lessons with entertaining examples. I recommend this book to anybody interested in starting or expanding their python programming skills and approach.