The book Expert Python Programming comes with subtitle Best practices for
designing, coding, and distributing your Python software. Well this seems to
be quite broad area to be covered by a single book, but the book really tries
to cover all topics at least in some form of overview and pointing user to
other documentation sources.
In first chapter you can find information about installing Python on various
platforms. As the book seems to be targeted to more experienced users, this
chapter seems to be a bit useless, but author decided to give a chance also to
users, who do not know the basics.
Next chapters describe best practices for writing Python code, which was the
most interesting part for me. I use Python several years, but I never really
found time time to properly look at using decorators, generators and other
"recently" introduced language features. Second chapter nicely covers these
and I really appreciated that I got idea for what decorators can be used.
Third chapter into class level and describes how to use metaclasses,
attributes, constructors and other things you can face on class level. Fourth
moves the topic to even more abstract way and in short summarises PEP 8 best
coding practices.
Here we leave solid ground of writing code and we move to more abstract areas
of managing projects, testing, documenting and distributing software. It
begins with description of distutils and setuptools in chapters five and six,
where you will find basic information about distributing your software.
Seventh chapter covers zc.buildout, which can help you with setting up and
deploying applications in way Zope and Plone do.
Next chapter is not really related to Python, it just describes advantages of
version control. The most Python related part is using Mercurial VCS, which is
written in Python, but you can of course use it for managing any project.
Next tree chapters are devoted to project development in general, describing
management of the project, generating documentation for project using Sphinx
(what actually made me into starting documentation for python-gammu in it) and
test-driven development practices.
Now comes again two more interesting chapters describing optimization of
Python code, giving the best advice not to optimize unless you are sure it is
needed ;-). But it also goes more deeper and describes benchmarking
procedures, how to debug memory usage and some basic tips for general things
which might improve performance.
Last chapter is some kind of extra in the book and to me it looks it was added
just to use buzzwords design patters, but well it is there and it covers few
design patterns which might be useful in Python like singleton or more
advanced version of it called borg.
In general this book covers quite wide range of topics, what can be seen as
biggest advantage and disadvantage. You will get basic overview of creating
Python project using modern methods (test driven development, design patters,
best practices for Python code), but you can not expect it will go into much
deep details.
The book can extend your knowledge of development in Python, but you
should carefully check examples with errata, because otherwise several of them
will fail. I'm not that good at spotting problems in written English (as you
can probably see in this post), but I spotted several errors in code and I
think more careful editor work on the book would improve my feelings a bit.
Also I personally would prefer much deeper look into some topics and skipping
the others, but one book can not fit all ;-).