Book Review: The Python Standard Library By Example
thatpythonguy writes "Addison-Wesley publishers has released The Python Standard Library By Example, another Python book that strategically fits in between programming cookbooks and library reference manuals. It brings the Python standard library that much closer to Python programmers and helps make them more proficient in their trade." Read below for Ahmed's first Slashdot review.
The Python Standard Library by Example
author
Doug Hellmann
pages
1344
publisher
Addison-Wesley Professional
rating
8 of 10
reviewer
Ahmed Al-Saadi
ISBN
978-0-321-76734-9
summary
A unique guide to the Python standard library that is between a cookbook and a reference manual
There has been an explosion in the availability of published titles for the Python programming language in the past few years. This has been driven by the rising popularity of this multi-paradigm language that has proven useful in domains spanning web, games, graphics, financial, science, automation and others. Many large and small corporations, universities and governmental organizations are using Python in their respective fields with seeming success.
One of the main reasons for the success of Python is the quality, breadth, and depth of its standard library. Unfortunately, this library is not documented sufficiently in titles that serve as introductory or reference material due to the nature of introductory texts that deal with the basics; on the other hand, reference texts are often too concise and lack sufficient examples. The title at hand is a library-centric tutorial/reference that can be a great tool when you need to learn how to solve certain problems using Python.
The book addresses itself to intermediate Python programmers and covers versions 2.7 and 3.x of the language. Although an experienced programmer coming from another language can learn a lot about Python by reading this book, I personally favor the traditional top-down, gradual method of learning a new language which involves an introductory, tutorial-style, and verbose introductory book. However, realizing that others might not like my cup of tea, I can envision, for example, someone familiar with socket programming picking up this book and writing a network application without prior Python experience. He or she might still need to look up language features on the way, but that should not be too hard as the language is easy to understand and there is a rich library of on-line (and printed) content for basic language constructs.
This title comes in a hefty 1300-plus-page, soft-cover book (or eBook) that is organized around thematic grouping of library modules. The groups are: text, data structures, algorithms, dates and times, mathematics, file system, data persistence and exchange, data compression and archiving, cryptography, processes and threads, networking, the Internet, email, application building blocks, internationalization and localization, developer tools, runtime features, language tools, modules and packages.
Each group contains the relevant modules from the standard library. For example, the text group contains the string, textwrap, re and difflib modules. Each of these modules is briefly described first and then its use is demonstrated in various ways under an appropriate heading. For example, the socket module (networking group) has sections covering addressing, TCP/IP client/Server, UDP clients/servers, UNIX domain sockets and multicast, among others. The code is written in such a way as to focus on the topic being discussed while not overlooking good practices such as wrapping a socket connection call with a try/finally block to ensure that the connection is closed in case of error.
A more advanced module, that is also described in the networking group, is SocketServer. This is a higher-level (on top of the socket layer) facility that enables the creation of network servers (e.g., HTTP or AMQP). It is nice to see that the book demonstrates the creation of an echo server using this module while incorporating more advanced topics such as threading and asynchronous I/O which are necessities in real-life, production code.
Although the content covers quite a bit of ground that surpasses many other sources in terms of coverage, the Python standard library is so vast that any one-volume book attempting to provide comprehensive coverage will necessarily fail! Nonetheless, you will find at the end of each section pointers to other material such as on-line resources, RFCs, and related books that can be used for a deeper study of the relevant topics.
I think that the text could use some typographical features to enhance the clarity of the content. These include highlighting the code using indents or an alternative font to set it apart from the text that surrounds it as I found it hard to visually distinguish the two. The code should also have the name of the file at the top of the listing so that when that name is used subsequently to invoke the code, it would be easy to reference the file contents. Also,I find the general typesetting not as pleasing nor as easy to read as titles from certain other publishers. This latter point is somewhat subjective and, in any case, does not detract from the utility of the content.
Despite the caveat above, I have to say that I like this class of documentation that is between a cookbook and a reference manual. I find it useful that the examples are not so terse nor overly verbose. I also appreciate the quality of the code and the references for further readings. I think that this book fills a void that will make many Python programmers more proficient.
Ahmed Al-Saadi is the Principal Software Consultant for Solea Research, a software consultancy and development company based in Montreal, Canada. He spends his free time writing, contemplating software architecture and playing his Flamenco guitar."
You can purchase The Python Standard Library by Example from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
One of the main reasons for the success of Python is the quality, breadth, and depth of its standard library. Unfortunately, this library is not documented sufficiently in titles that serve as introductory or reference material due to the nature of introductory texts that deal with the basics; on the other hand, reference texts are often too concise and lack sufficient examples. The title at hand is a library-centric tutorial/reference that can be a great tool when you need to learn how to solve certain problems using Python.
The book addresses itself to intermediate Python programmers and covers versions 2.7 and 3.x of the language. Although an experienced programmer coming from another language can learn a lot about Python by reading this book, I personally favor the traditional top-down, gradual method of learning a new language which involves an introductory, tutorial-style, and verbose introductory book. However, realizing that others might not like my cup of tea, I can envision, for example, someone familiar with socket programming picking up this book and writing a network application without prior Python experience. He or she might still need to look up language features on the way, but that should not be too hard as the language is easy to understand and there is a rich library of on-line (and printed) content for basic language constructs.
This title comes in a hefty 1300-plus-page, soft-cover book (or eBook) that is organized around thematic grouping of library modules. The groups are: text, data structures, algorithms, dates and times, mathematics, file system, data persistence and exchange, data compression and archiving, cryptography, processes and threads, networking, the Internet, email, application building blocks, internationalization and localization, developer tools, runtime features, language tools, modules and packages.
Each group contains the relevant modules from the standard library. For example, the text group contains the string, textwrap, re and difflib modules. Each of these modules is briefly described first and then its use is demonstrated in various ways under an appropriate heading. For example, the socket module (networking group) has sections covering addressing, TCP/IP client/Server, UDP clients/servers, UNIX domain sockets and multicast, among others. The code is written in such a way as to focus on the topic being discussed while not overlooking good practices such as wrapping a socket connection call with a try/finally block to ensure that the connection is closed in case of error.
A more advanced module, that is also described in the networking group, is SocketServer. This is a higher-level (on top of the socket layer) facility that enables the creation of network servers (e.g., HTTP or AMQP). It is nice to see that the book demonstrates the creation of an echo server using this module while incorporating more advanced topics such as threading and asynchronous I/O which are necessities in real-life, production code.
Although the content covers quite a bit of ground that surpasses many other sources in terms of coverage, the Python standard library is so vast that any one-volume book attempting to provide comprehensive coverage will necessarily fail! Nonetheless, you will find at the end of each section pointers to other material such as on-line resources, RFCs, and related books that can be used for a deeper study of the relevant topics.
I think that the text could use some typographical features to enhance the clarity of the content. These include highlighting the code using indents or an alternative font to set it apart from the text that surrounds it as I found it hard to visually distinguish the two. The code should also have the name of the file at the top of the listing so that when that name is used subsequently to invoke the code, it would be easy to reference the file contents. Also,I find the general typesetting not as pleasing nor as easy to read as titles from certain other publishers. This latter point is somewhat subjective and, in any case, does not detract from the utility of the content.
Despite the caveat above, I have to say that I like this class of documentation that is between a cookbook and a reference manual. I find it useful that the examples are not so terse nor overly verbose. I also appreciate the quality of the code and the references for further readings. I think that this book fills a void that will make many Python programmers more proficient.
Ahmed Al-Saadi is the Principal Software Consultant for Solea Research, a software consultancy and development company based in Montreal, Canada. He spends his free time writing, contemplating software architecture and playing his Flamenco guitar."
You can purchase The Python Standard Library by Example from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
... is that it's there (and I think it's actually great and indeed vast), but it's of seemingly little use in "production" code. The aforementioned SocketServer, for instance - try asking in #python on freenode how to do this-and-that with it. Answer: ditch it, noone uses it because it's crap, use twisted instead. It seems like a solid chunk of the provided functionality is being dragged along for (mostly) historical reasons, as you're supposed to use some third-party library that doesn't come bundled with the Python runtime by default anyway if you want to do actual stuff with the language that's ready for "the real world".
I still like programming in Python a lot though, and I do make extensive use of the "batteries" it includes. Will probably pick up the book; thanks for reviewing!
:%s/Open Source/Free Software/g
YTARY!
Yet another unneeded thousand page book of examples. The Python library documentation isn't bad, as such things go. Nor is the library that complex. Most of the library modules are independent of other modules, and have APIs of modest size. Another giant cookbook is unnecessary.
There are too many of these morbidly obese programming books out there. Little pamphlet-sized books would be more useful. Printing long code examples on paper is just silly; programmers who want to cut and paste need an online version.Those plastic cards which cram what you really need to know on one sheet would be even more useful for many programs.
...it can't possibly be of interest to Slashdot readers. I'm saving up for Packt's not-to-be-missed book on Bitcoins.
I realize at 1300 pages that it's already swollen and that they're not part of The Standard Library, but -some- mention of often used, substantial, and useful packages like Twisted or BeautifulSoup, and their relation to The Standard Library would've been nice to see.
If anyone wants to know more about two major versions old Drupal, I suggest they pick up the latest Packt book on two major versions old Drupal, because no one can teach you two major versions old Drupal like Packt can.
FTFY.
Anyone who took calculus remembers the table of integrals that was inside the front cover. Why not a table of functions?
At this point in the history of computing, we ought to have something like a dictionary of functions in common use. Aside from language barriers there are a few other issues which are, IMHO, solveable.
The type issue is one. We would also need a set of standard types. Each entry in the dictionary would have a list of common type signatures.
A simple example:
Divsion. Standard function no. 89. Common type signatures: i32:i32,i32. Exceptions: division by zero.
This raises the issue (no pun intended) of describing exception classes across languages but I don't think it's insurmountable either.
When computer engineering is a mature discipline, we should have a DB (in the old days there would have been a big heavy book) of functions. "I see you used standard GUI function 4076 with Window type 6 returning i32, was there a reason to deviate from the more common practice of returning u32, which is listed first in the reference?".
This is the book of the blog Python Module of the Week, so you can get a look at the content there.
The Slashdot reviewer writes:
"The book addresses itself to intermediate Python programmers and covers versions 2.7 and 3.x of the language."
Umm... no it doesn't. As anyone who has an amazon account can verify, the author does *not* cover Python 3.x. This is what Doug Hellmann says at the bottom of p.1 and the beginning of p.2 in his book:
"Although the current transition to Python 3 is well underway, Python 2 is still likely to be the primary version of Python used in production environments for years to come because of the large amount of legacy Python 2 source code available and the slow transition rate to Python 3. All the source code for the examples has been updated from the original online versions and tested with Python 2.7, the final release of the 2.x series. Many of the example programs can be readily adapted to work with Python 3, but others cover modules that have been renamed or deprecated."
This is seriously hurting the reviewer's credibility. How likely is it that he read through 1300 pages and didn't even understand which language the book was written in?
Since parts of the python standard library can dramatically change every x.x release. I found learning to apply and maintain code written in the "standard library" to be cyclical hell in a hand basket. Much of the documentation these days is along the lines of: No, usage of this or that feature was deprecated. No, though not documented, it's done this way now. No your getting this error because.. well.. we don't know, its ether 2.5, 2.6, or 3.0, figure it out. Given this experience, I don't see how a dead tree covering a particular one is of all that much value. To me a selling proposition would be one which provides a continuity in documentation with fully explained use-cases of features after 2.5- for those of us who have had to pick up the language and deal with the mess of non-versioned code. A mess that whether the authors of the language like it or not, do have a hand in being responsible for.
The review is spot on about the typesetting in the book; it is terrible and is a deterrent to enjoyment and utilization of the contents. I've never had this reaction to a book before; I'm not really a font-obsessive kind of guy. They would have been better off just sending the humongous PyMOTW PDF to the printer.
My favorite Python reference is Python Essential Reference (4th ed) by Beazley; it pretty much lives up to its title. Among other things it is good at identifying points where Python2 and Python3 diverge.
This is a very good review, Ahmed. Thanks for sharing!
Stop the effects of aging. Log in to our site and learn how to achieve stoping aging. Forget the fatigue and lack of energy. Retard up the natural process of aging.
Get all the benefits of a natural revitalizer that one you are needing.