Most Helpful Customer Reviews
50 of 52 people found the following review helpful:
5.0 out of 5 stars
An excellent reference to get the maximum out of Python, August 14, 2009
This review is from: Python Essential Reference (4th Edition) (Paperback)
The author of Python Essential Reference is David Beazley, who among other occupations created the open-source SWIG tool and the WAD mixed-languages debugger. His background is pervading throughout the book, in which the reader gets a clear sense of what is happening behind the Python programming language and learns how to use it efficiently instead of considering it as a black box.
The first 20 pages give an overview of the language and although it is called a "tutorial introduction", it should be understood that its purpose is for a programmer to see what Python looks like, and not for a novice to get their first programming course.
The next 156 pages offer a thorough review of the language and its environment. This is a very interesting part and should not be skipped even by people who already know Python. I said "review" but an experienced programmer should be able to learn the language by reading those chapters and putting them into practice with extra exercises.
Instead of simply describing the language, the author also hands out tricks of the trade, showing how to acquire good coding habits while using an sensible approach regarding the performance, which is often essential in a dynamic language. The fourth edition is focusing on version 2.6 but offers some historical perspective by pointing out several elements that were recently improved, or which are about to change in upcoming versions.
The first part of the book concludes with useful recommendations on program debugging and profiling.
The second part contains 388 pages and goes through the Python library, presenting the essential modules together with examples, notes and advices. After all, this is a reference, so we shouldn't expect any less.
Last but not least, the third part comprises 30 pages of precious information on Python/C interface for extending the language or embedding it in larger applications.
An appendix introduces version 3 for those who are ready to make the leap.
For the sake of completeness, if I were to make any reproach or wish for improvement, it would probably be on the overall presentation (and would be a very minor one). The style in the code excerpts could be more consistent in the first part of the book, and the second part could do with more emphasis on the ... reference ... character of the text, perhaps by providing a more convenient way to navigate through the different modules and by using more obvious styles for the different parts. I sometimes had the impression of reading a long listing of modules and methods instead of looking through a reference book. While the contents is superior to other references like "Python in a Nutshell", I found it easier to retrieve what I needed with the latter - a bit on the brink of obsolescence today - than I do now with the former.
I would definitely recommend this book to anyone desirous of improving their programming skills in Python, or having to write optimized code because performance is an issue.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
27 of 29 people found the following review helpful:
5.0 out of 5 stars
The Best Reference for the Experienced Programmer, August 4, 2009
This review is from: Python Essential Reference (4th Edition) (Paperback)
I've worked in C, C++, and Java, and for the last six years in Python. This is the book I've been looking for. If you want to know how the language works under the covers and how to best use it, this book is invaluable. The explanation of co-routines and generators is the best I've seen.
The presentation is logical and concise, and the examples are realistic. I've read many Python books, but this is the one that will stay on my desk.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
17 of 17 people found the following review helpful:
5.0 out of 5 stars
Probably the best "second book" on Python, March 3, 2011
This review is from: Python Essential Reference (4th Edition) (Paperback)
David Beazley's "Python Essential Reference, Fourth Edition" covers Python 2.6 and 3.0, and is thus quite (though not completely) up to date. The author has in essence chosen to present the intersection of the two branches, i.e. omit features of Python 2 that have been removed from Python 3. This volume's pace is rapid and the coverage is quite extensive, so this probably shouldn't be the first Python book one reads.
The Good: this book is approximately 700 pages long; even so, it's not that bulky and is therefore quite manageable. It is split into two parts: 200 pages on the language and roughly 400 pages on the library. The first part is very good, while the second part is unrivaled as of this writing (though this may change when Doug Hellmann's "The Python Standard Library by Example" comes out). Thus, the reader essentially gets two books for the price of one: the part on the language can be read linearly, while the library part can be read in chunks as the need arises. The book also includes an extremely useful Index which is approximately 80 pages long (and also contains unexpected entries, e.g. "chicken, multithreaded, 414"). Moving on to the material covered: Beazley includes an appendix on Python 3-specific concepts, but also offers useful advice on Python 3 throughout the main text (e.g. "To keep your brain from exploding, encoded byte strings and unencoded strings should never be mixed together in expressions"). I particularly enjoyed the sections on decorators, generators, and coroutines in the chapter on functional programming. Beazley has also posted on his website two tutorials on these topics that nicely complement the material in the book. Similarly, the chapter on multiprocessing and threading is impressive, and forms a nice set with the author's talk slides on the Global Interpreter Lock -- it's important to note that Beazley used to be a professor of Computer Science. Probably the most significant aspect of this book is the abundance of examples. I'm pretty sure the phrase that is most often repeated in this volume is "Here's an example". The examples are always enlightening, sometimes clever, but never obfuscating. Finally, the writing may not be flawless but overall it is quite good. Of course, any reference text is bound to be somewhat dry, but within the confines of the genre Beazley has truly done wonders: he has a personality and he's not afraid to show it. This jovial aspect of the writing is present when giving advice (e.g "Try not to mix threads and multiprocessing together in the same program unless you're vastly trying to improve your job security", p. 435), or just for its own sake (e.g. "If you change the code to only poll after every six-pack of beer", p. 469)
The Bad: chapter 1 is fun to read but it is deceptively titled ("A Tutorial Introduction"). For example, Beazley uses a decorator and the seek file method, without explaining anything about either of them. Of course, this book isn't supposed to be introductory, so strictly speaking my quibble is with the first chapter's title, not its content. The biggest problem I encountered while reading the book was the page layout in the majority of Part II: a module is introduced and then its methods are described by showing a name in bold, followed by a description on a separate line. This confused me to no end: whenever I saw a name, for a split second I would wonder if I should look up or down to find the description. This could have been avoided if the more standard tabular form had been chosen more often: name on one column, description on the other. Of course, I understand that this would have increased the size of the book considerably, perhaps prohibitively so. Moving on to more detailed complaints: for some modules (e.g. struct, shutil, os.path) Beazley gives a listing of the contents but, unfortunately, no corresponding examples. To be fair, he does use os.path functionality in a number of places throughout the book (though the index is no help tracking them down), just not in the appropriate section. Delving into even more detail: any book of this breadth is bound to contain minor errors. Here's a selection of such slips, all drawn from the same chapter: in some cases the prose is obscure, e.g. "A method is a function that performs some sort of operation on an object when the method is invoked as a function." (p. 33); sometimes a statement is contradicted in a later chapter, e.g. we read on p. 39 that "Sequences represent ordered sets of objects indexed by non-negative integers and include strings, lists, and tuples." only to find out on p. 68 that "Negative indices can be used to fetch characters from the end of a sequence."; similarly, on p. 45 we read that for dictionary methods like keys() "in Python 3 the result is an iterator that iterates over the current contents of the mapping", while on p. 632 we learn that "these methods return so-called view objects".
These days, the aspiring intermediate Python programmer doesn't have too many books to choose from: Martelli/Ravenscroft/Ascher's "Python Cookbook" is out of date, Ziade's "Expert Python Programming" contains too much material that is not Python-specific, and Alchin's "Pro Python" is only ~ 250 pages long. Thus, for the time being Beazley's "Python Essential Reference" is the obvious choice for a second book on Python. All in all, four and a half stars.
Alex Gezerlis
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
|