Follow Slashdot stories on Twitter

 



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:
  • 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:Python sucks (Score:3, Interesting)

    by philgross ( 23409 ) on Monday November 06, 2006 @03:42PM (#16739483) Homepage
    So, I was going to mod you Troll, but I decided to respond instead, since I think a lot of people are under the same misapprehensions as you are.

    Regarding the indentation-as-syntax, consider the following C code, where someone tried to add the baz() function to a loop:

    while (foo())
        bar();
        baz();


    This code has an obvious bug. Baz() is not in the loop body, because the braces are missing. It's obvious from the indentation that that was the coder's intention. Why does one need an orthogonal and error-prone syntax for marking basic blocks, when the formatting already makes the intention obvious?


    Or, consider this example from the paper Algorithm Education in Python [uci.edu]:


    Here is the Insertion Sort algorithm exactly as presented in Cormen, Leiserson, Rivest, and Stein's "Introduction to Algorithms":

    Insertion-Sort(A)
        for j <- 2 to length[A]
            do key <- A[j]
            i <- j - 1
            while i > 0 and A[i] > key
                do A[i+1] <- A[i]
                i <- i - 1
            A[i + 1] <- key


    Here is the same algorithm, implemented in Python:

    def InsertionSort(A):
        for j in range(1, len(A)):
            key = A[j]
            i = j - 1
            while (i >=0) and (A[i] > key):
                A[i+1] = A[i]
                i = i - 1
            A[i+1] = key

    I haven't left anything out. Paste that into a Python interpreter and run it:

    >>> x = [2,7,3,8,1] # create test case
    >>> InsertionSort(x) # call routine
    >>> x # look at result
    [1, 2, 3, 7, 8]

    There are about a thousand other cool things, and of course there are inevitably some warts and poor design decisions too. Bottom-line for me, at least, it's the power of Perl, but at the extreme other end of the spectrum in terms of readability. The Google folks think so too.

  • Re:Python (Score:3, Interesting)

    by cortana ( 588495 ) <sam@[ ]ots.org.uk ['rob' in gap]> on Monday November 06, 2006 @04:49PM (#16740801) Homepage
    And I'd been using that for years before I bothered to read the documentation and discovered:

    <pre>print '%(imperative)s, a %(adjective)s %(noun)s!' % {'imperative': 'Look!', 'adjective': 'built-in', 'noun': 'templating system'}</pre>
  • Re:Python is SLOW (Score:5, Interesting)

    by Ashcrow ( 469400 ) on Monday November 06, 2006 @05:06PM (#16741245) Homepage
    It really depends on what your doing with it. If you come from the Java world and write Python code like you would Java code it is quite slow.

    Also, keep in mind Python does not use a virtual machine at all in the same way Java does -- which means it is somewhat like comparing apples to oranges.

    I was a full time J2EE engineer for a while and a recent convert to Python for general programming. The things I noticed are:

    - Java is great for large teams of programmers working together across the globe but as good as Python for smaller groups in the same place.
    - Python's web frameworks are amazingly fast and very powerful.
    - Java is almost text book perfect when it comes to programming. Unlike most other languages kids can come out of university and not have to change hardly anything to get started in the real world of Java.
    - It's very rare to see stock Tomcats or even stock JVM's meaning that most (commercial) Java apps send the entire 'Java OS' (VM) with their products.
    - Java web apps are very slow on startup, but scale well after the startup time.
    - Python has a better RORA system, though Java isn't to far behind.
    - Java terminology is very confusing compared to Pythons esp. since it is generally termed by marketers (Java2 is Java1.4 and then we hit Java 5 which is Java1.5 ...)

    Here is how it seems companies leverage the languages ....

    1. Java
    Manager's reason for Java: "I have a large IT infrastructure and want to do enterprise applications with teams across the globe."
    Engineer Translation for Java: "I have an over all large group of engineers and want to make an application designed by the business with at least some of the team out sourced."

    2. Python
    Manager's reason for Python: "I have a small IT budget and want to agile and business reactive application development."
    Engineer Translation for Python "I don't have a budget to get more engineers and the requirements state that we need to be able to change and update the application on the business whim."

    In scenario number 1 it is a growing company who wants to hire lots of new engineers so the plus side of using Java is:

    1. Just about every engineer (good or bad) knows it
    2. It enforces C++ like development cycles
    3. If done right, the objects are reusable and simple for an architect to understand
    4. You can hire fresh outs

    In scenario number 2 it's a growing company who is not investing more money in the IT department but expects better results for the buck put into it. The plus side of Python would be:

    1. It's a RAAG language (read at a glance) which means you can skim through the code quite quickly without needing tracers or debuggers.
    2. By design each engineer is a mini architect
    3. If done right, the objects are reusable and simple for engineers to grasp quickly
    4. The quality of engineers you get tend to be quite high since most Python engineers are converts from other languages with X years of experience in the field. (though it also means you can't hire as quickly).

    Bottom line there is no right or wrong answer as to which is better or faster. Python is faster in some cases and Java is faster in others and it largely depends on how you run your business and the money that you want to spend in IT as to which one would help your company.
  • Re:Python (Score:2, Interesting)

    by WoLpH ( 699064 ) on Monday November 06, 2006 @06:03PM (#16742623)
    I hope you'll forgive me for posting so much code (well, it's slashdot after all), but something like that can be very useful, here's another example on how to separate your code and your variables easily.

    >>> spam = {}
    >>> spam['eggs'] = 'some eggs'
    >>> spam['beans'] = 'beans!'

    >>> 'The eggs: %(eggs)s' % spam
    'The eggs: some eggs'
    >>> 'Everything in spam: %s' % ', '.join(spam)
    'Everything in spam: eggs, beans'
  • Re:Python is SLOW (Score:2, Interesting)

    by noamsml ( 868075 ) <noamsml@gmai l . c om> on Monday November 06, 2006 @06:59PM (#16743747) Homepage
    Except for when I'm developing something. A month or so ago I needed a small script to generate an RSS feed from a webpage. Now, I had two (OK, more, but stay with me) choices: I could write it in C, taking days and writing, oh, 200+ lines of code, worrying about pointers, declaration, and script typing, or I could develop it with less that 100 lines of python in about half an hour. I'll let you guess what I chose.

Understanding is always the understanding of a smaller problem in relation to a bigger problem. -- P.D. Ouspensky

Working...