135 of 145 people found the following review helpful
on January 26, 2004
I was a programmer for 15+ years and used Perl for 8 or so of those years, so although I'm a newcomer to Python I'm definitely not a newcomer to programming or to scripting languages. When I ordered this book, I was worried that it might be too basic, but the more advanced O'Reilly Python books have not been updated to Python 2.2/2.3, so I ordered Learning Python anyhow.
And now that I've read it, I can highly recommend it even for experienced programmers. You will have to skim over basics in various chapters, but it's well-written and covers many topics, including 5-10 pages on 2.2's new-style classes, including static and class methods, instance slots, class properties, and __getattribute__.
It refers you to Python's documentation for the details of complex topics, but still gives you an idea of the concepts in play. For example, after a couple of paragraphs on instance slots, it says,
"... Slots are something of a break with Python's dynamic nature, which dictates that any name may be created by assignment. They also have additional constraints and implications that are far too complex for us to discuss here (e.g. some instances with slots may not have an attribute dictionary __dict__); see Python 2.2 release documents for details."
Which I think is a good compromise. They don't fill the book with details, but they don't simply wave their hands and give you no clue as to issues outside the scope of the book.
It is well-written and well-organized. It covers the core language well and gives a good taste for standard packages and many other tools including things like Pyrex and ctype.
(And you won't be disappointed with Python itself. A great language!)
37 of 39 people found the following review helpful
I'm an experienced C/C++ developer and needed to pick up python in a hurry for work. I ended up buying several python books to make sure I had all my bases covered. I've come to appreciate this book a lot.
It does two things very well. First, it gives you a good overview of the language. You can read the book front to back and it has a nice progression. You'll certainly know the basics if you do that.
Second, and probably more importantly, for those of us too impatient to read a book cover-to-cover, it serves as an excellent reference for beginners. When I started out there were all the little noob things that I found myself constantly having to look up. Like "how do you specify a comment?" or "how do you structure and if-block?" or "how to you get a substring out of a string". Very basic questions like this that many python books don't bother with because apparently they are too basic.
If there is a weakness, it's just that this book is rather small and only covers the very basics. So reading this book alone will certainly not make you a mighty python programmer, or even give you enough info to probably write something interesting. But this book definitely deserves a place on your bookshelf if you are starting out and need the basics.
96 of 112 people found the following review helpful
on January 3, 2006
This book is not very good for actually learning Python. It also lacks a reference section and is excessively wordy.
Learning implies tutorials and a gentle progression from basic to advanced subjects; this book does neither. For example, in chapter 3, "How You Run Programs", it introduces modules and namespaces--fairly advanced concepts to read about before even the first "hello world" program! In chapter 4, as it describes the use of numbers and strings, it is already delving deep into the uses and implications of Python's objects.
With well over 500 pages, there should be plenty of room for a reference section, but there is none. There is no list of built-in classes and their methods.
The overall tone of the book is enthusiastic, touting Python's object-orientedness and other advantages. Unfortunately, it is excessively wordy and difficult to read. Cheerleading can be excused, but it is present on nearly every page and gets old quick.
In a book about programming or a programming language, one might want tutorials, reference, discussion of advanced topics, or code examples. This book provides none of these things. I do not recommend it.
29 of 33 people found the following review helpful
on July 27, 2007
I am an experienced Perl and C programmer who wanted to try something new, and everyone raves about Python. The language itself is great -- but this book is awful. Here's the really short form of why I think so:
- The point of Python (or any programming language) is to do things, not to marvel at how cool the language is. Reading the book, you can't do anything other than toy programs until you're almost all the way through. That's 400+ pages of reading before you can do anything more interesting than basic operations.
- The book isn't concise -- quite the opposite. The authors marvel at the implementation details of the language at the very start -- which takes up many pages and isn't really relevant for the beginning python programmer.
I finally just went to the online python tutorial[...]it covered most of the same topics with a lot fewer words, and was less confusing to boot.
- The reason I buy books rather than just use online resources is to use the exercises as a method of forcing myself to learn the language in a structured fashion. The exercises in the book are trivially easy: they're not about thinking and understanding, but regurgitating what the book said. Because you're not doing any real work until the 400-page mark, you can't do anything really interesting in the exercises or on your own (if you're just reading the book).
I've read a lot of "Learning XXX" books. This is by far the worst.
My recommendation is to skip this book and go straight to the online tutorial. You'll save trees, money, and time.
17 of 19 people found the following review helpful
on January 2, 2005
Update for the 2009 edition: Mr Lutz has really gone overboard. This "learning" book has became heavier than Python itself. The size of the book detracts from the spirit of Python, which fortunately remains a compact and simple language as intended. I believe that many computer-literate people will find it easier and definitely quicker to just start coding in Python and read a documentation page now and then rather than read this book. Busy programmers who reported writing their first useful Python class in a few hours would need weeks to do the same while reading this book. Mr Lutz, let's be pythonic and scale this tome back to 500 pages, shall we?
The rest of the review is about the second edition:
I would never try to use this book as a reference. It was not designed and it's not good for that.
It was designed as your first book on Python, especially if this is your first programming language. As such, it gives you a really thorough and extensive introduction written by a renowed authority. The parts on functional programming, Python's OOP and modules lay the solid foundation for the future Python programmer. Beware though: compared to similar "foundation" books in other languages' realms, this one is slow-paced, limited in scope, wordy and even redundant at times.
If you already know a language like C++, Java or Perl, and especially if you've already written some Python code, then this book is not your best choice: it will seem terribly slow paced, tedious, bloated and of no value as a reference (which is what an experienced programmer like you really needs most of the time). In this case, you could use a short and freely available tutorial like Guido's, then a good reference book like Python in a Nutshell and maybe some more advanced books like Python Cookbook and Python 2.1 Bible (provided there will be a new edition).
As an intermediate or experienced programmer, you may still benefit from Lutz's "textbook". You may want to skim quickly through the first 3 Parts (which make 180 pages of beginner's stuff you've learned in highschool, decorated with the occasional gem toward the end of some chapters), then slow down a bit for the rest of the book and pay special attention to chapters 14, 17, 18, 21, 22, 23, and 27. This book has too many chapters for my taste, btw.
Part VIII, written by another authority (David Ascher), is a little too short and still bad for reference. In the next edition, I hope it will be expanded to a reasonable level of detail. I found the coverage of regular expressions particularly disappointing -- probably because they are covered by Mr Lutz's other book, Programming Python, which was supposed to be your second book. The exercises at the end of each Part are not the most interesting and useful I know of.
13 of 14 people found the following review helpful
on March 31, 2007
I'm only about 100 pages into the book and I'm finding the constant references to C/C++ are getting very annoying. Just about every section refers to C, assuming you are intimately familiar with the language. "Just like in C", "same role as in C", "similar to X function in C", "unlike in C", "if you've used C", and on, and on. I suppose this would be a positive for someone coming to Python straight from C, but for the rest of us it can become irksome quickly.
11 of 12 people found the following review helpful
on December 17, 2006
I have been a Zope/Plone developer for over a year and that is also the total amount of time I have spent with Python. With a CompSci major and experience in languages like C, C++, and Java, Python was easy to pick up and is the most programmer-friendly programming language I have used. I learned Python mostly by reading the online, free book Dive Into Python and reading the open source code for Zope/Plone.
After a year of this, I knew Python pretty well (well, it took much less than a year) including best practices, but I felt that I may be missing the full potential of Python, because I only learned it in the context of Zope/Plone APIs and my needs for developing in that framework.
I picked up this book hoping to recover the basics, understand the behind-the-scenes technical aspects of what Python is actually doing, and to make sure I hadn't missed anything along the way.
For this purpose, I think this book works very well. The writers explain what is really happening behind the scenes (mostly in C), a handful of gotchas, and really helped me understood what Python was really doing and why. If this is what you are looking for, this is a great book to have.
However, if I did not already know Python, I think this book would have set me off track a bit. The writers spend a lot of time on what are really trivial concerns for beginners, and they hardly ever discuss best practices. In their effort to cover all the bases, such as while loops, they sometimes show something that is not a best practice in Python (you hardly ever use while loops in python). Important topics like classes and OOP aren't covered until late in the book. If you are new to Python, I highly recommend checking out Dive Into Python instead. They will get you developing as a Python programmer, instead of a C programmer that happens to be using Python (ie, using list comprehension instead of while loops, etc.).
9 of 10 people found the following review helpful
on March 12, 2007
This book does a good job of presenting the basics of the Python Language syntax, along with the built-in tookits that come with any Python Impelementation. However, an important thing to know when reading the language is also knowing what a particular language is good for and what it is not good for. It is at this task that _Learning_Python fails.
I understand that Mark Lutz and David Ascher are very enthusiastic of the language, but they lose credibility when, at every possible turn, they feel the need to take their dig at C/C++/Java. Some of these digs are misleading at best. For example, at one point the authors tout functions in Python as being superior to those in C++ because Python functions don't care about types, so any function works on types for which the statements in the function are all compatible, and makes a point about how this is not true in C++. This is misleading, because C++ (even at the time my copy of the book was printed) had introduced templates, which allows for much the same flexibility as Python functions. Do templates have their problems? Yes, but the book instead has us believe that this functionality does not exist at all in C++.
Also, at the beginning of the book is a section titled (in effect) "Why Use Python?". Instead of objectively listing the advantages and disadvantages of Python relative to the other languages, the advantages of Python are highly touted while the disadvantages of Python are deliberately minimized and brushed aside.
Contrast this behavior with Stroustrup's C++ book, where Stroustrup is careful to point out that C++ isn't right for everything, and that there are advantages to being well-versed in multiple languages, realizing that there is no need for one language to be *the* language. Overhyping Python does the reader a disservice -- either the reader will believe the authors, in which case the reader will try to use Python everywhere, or the reader will disbelieve the authors, at which point the author has no credibility and the reader will be less likely to take the author's points seriously.
9 of 10 people found the following review helpful
on May 6, 2007
This book bills itself as a book for beginners to programming but actually it's for experienced C programmers who are making the transition to Python. Someone with little coding experience will quickly get discouraged due to all the poorly explained terminology and constant references to C. Also, the pattern of the book is to give an introductory chapter on basic concepts then two or three chapters that get into extremely detailed explanations. At the end of one of those mind-numbing journeys through obscure details, the author will often will often say something like "But I would suggest you avoid doing this because..." Huh? Then why even bother to explain it? I can't believe Python is as dense and involved as this book makes it. If the authors would only spend as much time on simple, logical explanations as they do on explaining why Python is superior to every other programming language on the planet, this book might be useful.
6 of 6 people found the following review helpful
on February 26, 2011
You don't want this edition.
It is labeled as "the Kindle edition" as if it were the most recent version. It is not. The most recent edition of this book is the 4th edition, which contains MUCH more material than this edition. I found this out the hard way.
Regarding the book itself (4th edition), the comments are fair. It is highly informative and verbose but poor as a tutorial.