Author: Wesley J Chun
Publisher: Prentice Hall
Aimed at: Those who already know Python
Pros: Highly practical
Cons: Doesn't go far enough
Reviewed by: Alex Armstrong
Lots of books that promise to get you started with a language but what do you read if you want to find out how the language is used?
This is the third edition of a well respected book on using Python and the new edition makes it all the better. The book isn't about learning Python and it doesn't go into exotic tricks and ways of using the language that are unusual. What it does is to take a set of topics and explain how best to tackle them using Python. In most cases this amounts to a tour of some Python library or other. So if you are happy about how to use all of the Python libraries to get jobs done then don't bother with this book - but most of us could use some help.
This is a very reworked third edition and the title now includes the word "Applications". There isn't much new material and the chapters on the Python language as opposed to application of it have been removed. What this means is that you have to know the Python language before you begin to read it.
Chapter 1 is on regular expressions, which is a topic that you need to know about almost no matter what language you are working in. Chapter 2 deals with network programming from raw sockets to the Twisted framework. From here we move up to internet protocols - Network News, E-Mail and FTP. Chapter 4 deals with the difficult topic of multi-threading which is all the more difficult in Python because of the single threaded interpreter. The subtleties are reasonably well covered. Chapter 5 introduces Tkinter and how to create a GUI.
Chapter 6 is a very general look at all things database - MySQL, ORMs, and NoSQL. If anything it is a bit too fast and not concentrated on getting to grips with any particular database. It would serve as a survey, but if you need to do any real database work you will need additional help.
Next we have an odd chapter on using COM in Python to control Microsoft Office. It is only odd in that Python is not the first language you think of to do this sort of thing.
Chapter 8 brings the first part of the book to a close with look at extending Python by writing extensions - again not something everyone will want to do.
Part II of the book is on web development. It covers both the client and server side of the problem You can discover how to build your own browser using HTTP and how to make use of server side CGI and WSGI. There is a whole chapter on Django - the Python web framework and one on using Google App Engine. Given that Google App Engine is Python based this isn't out of place.
Part III of the book is just a mixed collection of topics that don't really belong anywhere else. Chapter 14 covers text processing and Chapter 15 is about various implementations of Python and other systems like Google+
The book closes with an appendix on Python 3 and one on how to migrate to Python 3.
The writing style is conversational and friendly and the examples are explained in detail. This is not a book that is easy to dip into, however, because the explanations are linear and you need to start at the beginning of a chapter and work your way to the end. Most of the topics are covered in just enough detail for you to understand what is going on and get started with your own program. After you have moved on beyond the "getting started" phase, you will almost certainly run into problems that are not covered by and not even explored in this book.
This book is not for the expert or the complete beginner, but if you live in the middle ground and want to see what real world tasks you can tackle using Python this will be a welcome addition to your bookshelf.