Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×

Core Python Programming 148

Ravi writes "Python, the dynamic object oriented programming language created by Guido van Rossum is known to deliver both the power and general applicability of traditional compiled languages without the complexities accompanying them. Coupled with its ease of use, programs written in Python can be run on multiple Operating systems and system architectures which gives it the same portability of any interpreted language. My first brush with Python was when I tried out a beautiful game called PySol — which is more like a collection of over 200 card games and PySol is entirely coded using the Python language. Nowadays a variety of Python web frameworks have also cropped up which promise the same kind of rapid application development that is possible using other programming languages." Read the rest of Ravi's review
Core Python Programming - 2nd Edition
author Wesley.J.Chun
pages 1050
publisher Prentice Hall
rating 9
reviewer Ravi
ISBN 0-13-226993-7
summary An excellent book to learn the Python programming Language


I found the book titled "Core Python Programming" authored by Wesley.J.Chun and published by Prentice Hall to be an ideal book to learn the wonderful Python language. This book is quite voluminous, with 23 chapters spanning 1050 pages. The book is divided into two parts the first part titled Core Python which contain 14 chapters which impart a sound understanding of the semantics of the language and the second part titled "Advanced Topics" which contain a collection of 9 chapters which give a good introduction to the specialized uses such as in database programming, network programming, using threads in python, GUI programming and so on.

In the first chapter of the book, the readers get to know the various features of Python and the steps needed to install Python on ones machine. When you install Python on your machine, it also provides its own shell where you can execute pieces of python code. The author has taken advantage of this functionality of Python in narrating the concepts throughout the book. Each concept and syntax is followed by bits of code which the readers can try out in the Python shell in its entity. I found this process much easier in learning this language as one need not go through the write — compile — execute cycle which is more prevalent in the traditional languages.

In depth coverage has been provided for important concepts such as lists, tuples and dictionaries as well as data-types and string sequences and they have been provided separate chapters of their own. The sixth chapter titled "Sequences: Strings, Lists and Tuples" is the second largest in the book and is quite detailed in its coverage of the topic.

Chapter 9 deals with file manipulations where the author introduces all the built in functions available in Python which allow one to open, read from and write to a file. Interestingly, the functions are also illustrated by aid of short easy to understand examples. A couple of modules related to file handling are also introduced in this chapter.

Errors and exceptions form the basis of the 10th chapter where different errors and exceptions supported in Python are explained. This chapter also explains how programmers can create custom exception classes which I found quite informative.

One of the biggest advantages of Python is that all its functionality is split up into modules. A module could be just a single python file which contain a collection of functions or classes which can be re-used in programs written in Python. And all one has to do is import the module into ones programs to start using those pieces of code. The chapter 12 titled Modules give a firm understanding of this concept and also introduces different ways in which you can import external pieces of code into the Python program.

Chapter 13 titled "Object Oriented Programming" is by far the largest chapter in this book and spans over 100 pages. In this chapter, the author endeavors to give a sound base to Object oriented concepts as well as how they relate to programming in Python. The author introduces a large number of Python classes, methods and descriptors in this chapter.

Regular expressions play a very important part in programming verily because manipulating text/data is a necessity. And it is possible to easily modify and mould data to ones choosing by way of regular expressions. Python has strong support for regular expressions. The second part titled "Advanced concepts" of the book starts with a chapter on regular expressions. In this chapter, one gets to know about the regular expression module and many functions associated with the module. The author also provides a couple of examples which give insights into the ways in which regular expressions can be used in Python to reformat data.

The next two chapters give an introduction to the world of sockets and how Python can be used to write client server programs.

Multithreaded programming forms the basis of the 18th chapter. Here the author introduces a couple of modules available in Python which make it quite easy to create threads in ones Python program.

I found the chapter titled "Web Programming" very interesting to read. Especially since Python is used in a large way to create dynamic websites. And the next chapter titled "Database programming" gives a sound introduction to the Python objects which allow one to easily connect to and retrieve data from the databases.

I found this book really informative, especially suited for upcoming Python programmers. At the end of each chapter, there is an exercise section which imparts a nice touch to this book as it allows you to test your knowledge. Even though the advanced topics (second part of the book) are not covered in depth, the author succeeds in providing enough knowledge about the relevant Python modules and functions followed by a couple of examples which whets ones appetite without overwhelming the reader. This is the second edition of the book and it has been significantly revamped to include new features introduced in Python 2.5.

The author Wesley J. Chun has been a former employee at Yahoo and has played a major role in creating Yahoo Mail and Yahoo People Search using Python. He has over 20 years of experience in the IT field with over a decade of experience programming in Python.

Ravi Kumar likes all things related to open source and free software and enjoys sharing his experiences and thoughts through his blog All about Linux.


You can purchase Core Python Programming - 2nd Edition from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
This discussion has been archived. No new comments can be posted.

Core Python Programming

Comments Filter:
  • by Dr. Smeegee ( 41653 ) on Monday November 06, 2006 @03:12PM (#16738981) Homepage Journal

    One might try out Alan Gald's fine Learning to Program [freenetpages.co.uk] site. Short on pretty. Long on usefulness.

    Oh, and all the thick books in the world will never help a budding python coder more than the tutor mailing list [python.org].

    • by AxXium ( 964226 )
      Thanks a bunch for that tip on the mailing list list! :)
      • It sure is handy! One can actually get decent advice from at least one O'Reilly book author who posts pretty regularly. It's very low-noise and calm. I have never seen a RTFM. :-)
    • by leoPetr ( 926753 ) <leo.petr@gmail.COUGARcom minus cat> on Monday November 06, 2006 @03:22PM (#16739137) Homepage Journal
      For that matter, the Official Python Tutorial [python.org] is doubleplusgreat. It's both well written and comprehensive.
      • by CustomDesigned ( 250089 ) <stuart@gathman.org> on Monday November 06, 2006 @04:36PM (#16740479) Homepage Journal
        I use LiveWires [livewires.org.uk]. I teach a high school programming class with 7th graders. The adult oriented tutorial is a little too steep for them. They move along just fine with the LiveWires course. Also, the example projects are games. :-)

        An interactive (has an immediate mode prompt) language like Python is very helpful for first learning. BASIC used to fill that role, but I like starting with structured concepts. Kids have no problem "getting" that indentation marks blocks.

        Some experts hate python because while the grammar is "context free", the lexing isn't. The grammar is defined in terms of INDENT and OUTDENT taking the place of '{' and '}' (or BEGIN and END). However, whether a given indent is an INDENT or OUTDENT depends on context. So you can't use a traditional lexical analyzer when programmatically generating/modifying python code. You have to translate leading whitespace to INDENT and OUTDENT based on lexical context when parsing, and translate INDENT and OUTDENT to the appropriate amount of leading whitespace when pasting code blocks.

        Personally, I don't find that this is a problem. Sure 'lex' doesn't work out of the box, but the custom lexing code is pretty trivial. And the indentation sure is intuitive. Maybe that means I'm not an expert.

    • I highly recommend (Score:1, Informative)

      by Anonymous Coward
      Guido van Rossum himself as well as Fred Drake wrote an amazingly concise and complete introduction to Python. This book will get you up and running quickly. The book is called "An Introduction to Python" and it can be found here (free html, a $5 pdf, or isbn):
      http://www.network-theory.co.uk/python/intro/ [network-theory.co.uk]

      This book is only 100 pages long! It was written for Python 2.2.2, but it is perfectly useful for any Python 2.x. This book is amazingly concise, but it is also quite complete. You will get the most ou
    • I've been using How to think like a computer scientist: Learning with Python [greenteapress.com]. It's useful, but a bit terse. My programming skills are rather limited and rusty, so I got stuck halfway through the book. People who program for a living will find the book easy to digest, I expect.
  • I'm just starting to learn programming, starting with Python. It's actually very easy, but you can do quite a lot with it. I also like that the interpreter's a small download, and easily available on the 3 different OS's (Windows for gaming, Mac at school, and Linux for work at home) a I use daily, which isn't the case, for, say, BASIC (As far as I've found).
  • has documentation too...
  • Unless Chun has changed the focus a lot, the book takes a fairly introductory stance on things. There's a lot of material explaining programming practices, OO and so on. If you're experienced with C/Perl/*nix development, you're probably better off with an O'Reilly book, or something else that has more reference material.
  • Where's the review? This was a sketchy synopsis. How about the writing style? Does the code use modern idioms? What did the examples cover -- are they real-world or contrived? Hell, is the typeface clear?

    It's no wonder I skip straight to the comments -- these reviews are just about the most content-free section of slashdot.
    • by Osty ( 16825 )

      It's no wonder I skip straight to the comments -- these reviews are just about the most content-free section of slashdot.

      I could almost accept the contentless-ness of the "review" if it was at least readable. "Book report" is right, as this reads like it was written by a 4th grader. It's full of run-on sentences, sentence fragments, overly-repeated phrasing ("This book", "The book") and sentence structure, convoluted paragraphs covering multiple unrelated topics, minor spelling and punctuation errors,

  • Q: How many Python programmers does it take to screw in a lightbulb?

    A: That joke's not funny.
  • portable gui (Score:3, Interesting)

    by Speare ( 84249 ) on Monday November 06, 2006 @03:33PM (#16739349) Homepage Journal

    After a year of fiddling with Python, I find I quite like it for some things, and it's not the right fit for other things. That's fine, there's no reason to be rabid pro- or rabid con- about any language.

    I happen to use Linux, OSX and Windows, and the number one annoyance for me is a lack of clear "native-looking" GUI or OpenGL toolkit offering that is reachable by scripting languages like Perl and Python.

    I'd like to see PyGame in a MacPort. The Images module was pretty easy to build but it should be in MacPorts too. I don't want to rely on X11 when on a Mac, but to use X11 when on Linux, which seems to be like bringing antimatter and matter together in the same universe. A GladeXML-like module that relies only on Aqua would be great.

    Similarly on Windows, you're relegated to some fugly Tk choice if you want portable GUI. I can't think of a toolkit that looks less native than Tk, unless you count the early Java Swing "Metal" theme.

    The fact that OSX still isn't standardized on python2.4 makes it hard to support python-rich applications like Blender, and we still run into problems where a 2.3 parser can't let scripts use 2.4 features (even smart scripts that try:except: to fall back gracefully). I think Leopard will be python2.4 but don't recall seeing official confirmation on that.

    I'm sure I've misstated something technically-- I don't have my notes from home to double-check a few things from my last gui toolkit search a couple weeks ago.

    • Re:portable gui (Score:4, Informative)

      by jamwt ( 220439 ) <jamwt@@@jamwt...com> on Monday November 06, 2006 @03:43PM (#16739517) Homepage
      How about wxPython? [wxpython.org] Or, if you prefer, PyQT [riverbankcomputing.co.uk]? Both excellent.
    • by izomiac ( 815208 )
      WxPerl [sourceforge.net] looks fairly native to me. I tried it out a few years ago, but haven't stuck with it since I switched to an OS that it doesn't support.
    • Re:portable gui (Score:4, Informative)

      by Electrum ( 94638 ) <david@acz.org> on Monday November 06, 2006 @03:45PM (#16739575) Homepage
      I happen to use Linux, OSX and Windows, and the number one annoyance for me is a lack of clear "native-looking" GUI or OpenGL toolkit offering that is reachable by scripting languages like Perl and Python.

      wxPython [wxpython.org] is native on X11, Windows and Mac OS X.

      I used PyOpenGL [sourceforge.net] a few years ago and it was a very pleasant experience. It was easy to translate C examples to Python, without all the annoyances of using C. Obviously you wouldn't want to write a full game engine using Python, but it is nice for experimenting with OpenGL.
    • Re:portable gui (Score:4, Informative)

      by vivek7006 ( 585218 ) on Monday November 06, 2006 @03:48PM (#16739635) Homepage
      I happen to use Linux, OSX and Windows, and the number one annoyance for me is a lack of clear "native-looking" GUI

      QT [trolltech.com] with python bindings PyQt [riverbankcomputing.co.uk] will give you native looking GUI on all three platforms you are interested i.e windows, linux and OSX. Now QT4 is available as GPL even on windows, so its truly "free". QT also comes with QT-designer which IMHO is the best rapid GUI designer app.
      • by hachete ( 473378 )
        wxWidgets comes with a binding for quite a few languages, and support for a lot of platforms, including PDAs. wxPython is pretty cool.
    • A mac port of pygame is available here: http://pythonmac.org/packages/py24-fat/ [pythonmac.org]
      It uses some form of wrapper program for the SDL surface so it doesn't need X11... Take a look.
    • Re: (Score:1, Offtopic)

      by Jerf ( 17166 )

      I happen to use Linux, OSX and Windows, and the number one annoyance for me is a lack of clear "native-looking" GUI or OpenGL toolkit offering that is reachable by scripting languages like Perl and Python.

      What you're probably looking for there is wxWidgets [wxwidgets.org], which is a sophisticated native wrapper around each of those and has binding for Python, Perl, and the usual motley crew, including .Net and to some extent Java (I think).

      It has XRC [wx4j.org] files, which I think is how GUI designers tie into wxWidgets, covering t

    • PyGTK. GTK has ben ported native over to windows and PyGTK is much easier (IMHO) to code in than PyQT or especially tk.
  • BN is overpriced (Score:3, Informative)

    by Electrum ( 94638 ) <david@acz.org> on Monday November 06, 2006 @03:39PM (#16739455) Homepage
    Save some money:

    Amazon.com [amazon.com] $32.99
    Overstock.com [overstock.com] $31.34
    Half.com [ebay.com] $28.95

  • For anyone who has ever programmed before, the O'Reilly Python Pocket Reference is all that you need to start. I say that because Python is so simple to learn that I am afraid that some giant book might end up being a hindrance rather than an asset at the start. You might lose sight of just how simple a language it is- yet its very powerful and extensible. (the Pocket reference is around $9 or $10)
  • Might not work as a direct substitute, but Python also has an extensive online tutorial under the documentation section of their website, http://www.python.org./ [www.python.org]
  • I'm sorry but Python is a VERY easy language to learn plus inherently object oriented (although it impressively supports the functional paradigm as well). How is it that you can get all the way to chapter 13 in a book about python before talking about its OO features? I'm not seeing much value here...
  • Few web-hosters have python to begin then. Then I read that for python to perform well requires mod_python 3.X, which in turn requires Apache 2.X. Practically no web-hosters use apache 2.x.

    Popular frameworks like TurboGears, or Django, also require mod_python 3.x and apache 2.x.

    No problem if you are developing internally, but if you want a hosted solution, I'm not sure if python is practical.
  • WTH?! (Score:1, Troll)

    by sofar ( 317980 )
    Python is a serious piece of problems for me:

    "Python, the dynamic object oriented programming language created by Guido van Rossum is known to deliver both the power and general applicability of traditional compiled languages without the complexities accompanying them."

    Sounds like a typical spamvertisement really!

    "Coupled with its ease of use"

    umm hell, python is notoriously known for bad coders, writing broken applications based on underdeveloped and unmature modules, breaking forward compatibility.

    Sadly en
    • by NNland ( 110498 )
      "Even if the original developer stopped working on it, somebody should have been able to pick it up and maintain it easily, and the fact that this didn't happen is proof again that python is barring its own progress."

      No, it didn't get picked up and maintained because no one cared enough about the application to pick it up and maintain it. By your argument, no programming languages are possible "to maintain forward" because there are good applications written in all languages that get dropped because the ma
    • Yeah, well, at least it's not Perl. Or C.
  • Someone used "verily" on slashdot?!
  • Gushing review of 1000+ page book that can't even begin to be as concise as K & R... again.

    Yawn.

    Send the author back when they can get the size down to something the size of K & R while maintaining the same level of usefulness.
  • Reference counting memory management does not allow cyclic data structures, and since most programs have them (especially business apps with object models where nodes point to children or parent) or any GUI app (children widgets point to parent and vice versa), I fail to see how it is "easy to use". It is as easy to use as C++ with smart pointers, regarding memory management.

  • - You can't delete all the messages in one folder.
    - The search function never works as intended (I want to look for messages only in one folder, damnit!).

    So assuming this guy is very clever, Python must be broken or too dificult to use.

BLISS is ignorance.

Working...