Practical Python

Beginning Python, Novice to Professional, by Magnus Lie Hetland, APress 2005 640 pages.

This is an updated and thoroughly revised version of an already superb book, Practical Python by the same author. The revision makes this one of teh very finest introductory books about Python, and the the thoroughness, depth and breadth of subjects makes this much more than just an introductory book, in fact doing justice to the subtitle.

It is exceptionally well organized. The first third covers the core language in depth and as well as any other introductory book. The second third covers extensions to the core language. These two sections, all by themselves, make this a five star introductory text equal to any other introduction the Python programming language.

But it is the final third that really sets the book apart and makes it a classic and definitive text. This final of the book is a series of practical projects that illustrate the topics already learned and also illustrate superb Pythonic idiom and usage. The only way to get the most out of the book is to work along diligently with each project, and they are very clearly explained and simplified.

The projects are organized in a consistent manner. First, a problem is stated, then three or so specific goals are formulated, then the appropriate tools are chosen, and then various preparations are made, and only then is the first implementation made, and then refined. This may be helpful in illustrating the mindset and methodology of a programmer as he decides on new projects and their implementation.

Projects include a text editor, two complete projects dealing with XML, creation of PDF graphics from HTML data, gathering and disseminating NNTP newsgroups data, building a chat server, enabling collaborative editing via CGI, creating an online bulletin board using CGI and PostgreSQL, file sharing with XML-RPC, putting gui a interface on the XML-RPC program, and creating an arcade game using pygame.

As you can see, the author does cover some rather specific and even advanced applications. He does not dwell on advanced concepts, but rather he focuses on actual, practical applications. The book is well named.

Beyond that, the projects chosen have an area of concentration in internet or web applications, and for a relative newcomer , this is a god-send; because this book walks one through these projects in enough detail to allow success in a relatively short period of time.

On balance, this is a most excellent book. As stated earlier, it reinforces and consolidates one's learning while going much more into detail on specific, worthwhile programming projects, especially of a web nature, On balanced , this book is most highly recommended.