that you have engaged us to help you learn Python as quickly and as
as possible. Learning the syntax is one goal of this book; however, we also believe that if you learn how Python works under the covers, you won't just be able to
in Python, but you will write more
Python applications even as a beginner to the language. As you know, just because you learn a language's syntax does not make you competent in it right away.
Throughout the book, you will find many examples that you can try right in front of your computer. To
the concepts home, you will also find fun and challenging exercises at the end of every chapter. These easy and intermediate exercises are
to test your learning and push your Python skills. There simply is no substitute for experience. We believe you should not only pick up Python programming skills but also be able to master them in as short a time period as possible.
About This Book
from other Python books on the market by presenting a broad range of topics, providing
examples, and going in-depth where necessary. This book does not require a specific background such as prior knowledge of C or object-oriented programming. It is also not a large case study book that does not facilitate picking up the language quickly. Finally, this book is not a pure reference nor is it meant to be a quick "dive" into Python. What we have is an extremely comprehensive introduction to the core features of the language (Part I) followed by a set of chapters that delve into specific areas of intermediate Python programming.
This book is 40 percent introductory, 40 percent intermediate to advanced, and 20 percent reference. It is
toward technical professionals who are already familiar with programming in one other high-level language, as well as university/college and secondary students. Because Python is used in larger solutions such as Zope, Plone, MailMan, and Django, this book may be used by principals developing, managing, maintaining, or integrating with those systems.
With regards to the code in this book, about a third of the first edition readers sent in complaints that there were not enough large, full-fledged applications in the book, or that the code examples were not long or comprehensive enough. Everyone else wrote that they loved the short, easy-to-understand examples and were not bored of page after page of mind-numbing code. The philosophy behind more short examples is to give you the ability to look at a piece of code and grasp its entirety. These
into building blocks to understanding and then can be incorporated into larger applications as well. There are
for most of the larger programs in the book. The abundant interpreter code snippets
throughout the book are there for you to try on your computer as you are learning Pythonuse the interactive interpreter as much as possible. You not only learn and improve your Python from using it, but you can also benefit from working out
in your code
you paste it into your source file.
Because you cannot learn Python well without practice, you will find the exercises at the end of every chapter to be one of the greatest strengths of this book. They will test your knowledge of chapter topics and definitions, as well as get you to code as much as possible. There is no substitute to learning a programming language faster and more effectively than by building applications. You will find easy, intermediate, and difficult problems to solve. It is also here that you may have to write one of those "large" applications that many readers wanted to see in the book, but rather than having me do it, you gain the most from such exercises. Appendix A features answers to selected problems from each chapter.
Another set of first edition readers remarked how useful the reference tables were throughout the book, and how they meticulously
them for reference. Well, instead of flipping through each chapter looking for the tables, we have summarized the most highly used ones in Appendix B. Thanks for all of your feedback. I
you to keep talking to us and help us make a third edition possible and better than its predecessors!
Finally, both the "Other References" appendix and the CD-ROM from the first edition are not included with this edition. You would not believe how quickly Web links can become obsolete in six months much less six
! The most up-to-date source code and Python interpreters can easily be downloaded for offline use at the book's Web site, so there really is no reason to include a CD-ROM.
About the Reader
This book is meant for you if you are a programmer completely new to Python or already know some Python but want to know more and improve your Python skillset. Python is used in many fields, including engineering, information technology, science, business, entertainment, and so on. This means that the list of Python users (and readers of this book) includes but is not limited to:
Hardware design/CAD engineers
QA/testing and automation framework developers
IS/IT/system and network administrators
Scientists and mathematicians
Technical or project management staff
Multimedia or audio/visual engineers
SCM or release engineers
Web masters and content management staff
Customer/technical support engineers
Database engineers and administrators
Research and development engineers
Software integration and professional services staff
Collegiate and secondary educators
Web service engineers
Financial software engineers
And many others
Some of the most famous companies using Python include Google, Yahoo!, NASA, Lucasfilm/Industrial Light and Magic, Red Hat, Zope, Disney, Pixar, and Dreamworks.
The Author's Experience with Python
Python over a
ago at a company called Four11. At the time, the company had one major product, the Four11.com White Page directory service. Python was being used to design our
product: the Rocketmail Web-based e-mail service that would eventually
into what today is Yahoo!Mail.
It was fun learning Python and being on the original Yahoo!Mail engineering team. I helped rearchitect the address book and spell checker. At the time, Python also made its way as part of a number of other Yahoo! sites, including People Search, Yellow Pages, and Maps and Driving Directions, just to
a few. I was the lead engineer for People Search.
Although Python was new to me then, it was
easy to pick upmuch simpler than other languages I had learned in the past. The scarcity of
at the time led me to primarily use the Library Reference and Quick Reference Guide as my tools in learning, and also led to the motivation for the book you are reading right now.
Since my days at Yahoo!, I have been able to use Python in all sorts of interesting ways at the jobs that followed. In each case, I was able to harness the power of Python in solving the problems at hand and in a
manner. I have also developed several Python courses and have used this book to teach those classes, truly
my own dogfood.
Not only is
Core Python Programming
a great book to
Python from, but it is also the best book to
Python with! As an engineer, I know what it takes to learn, understand, and apply a new technology. As a professional instructor, I also know
what is needed to deliver the most effective sessions for
. This provides the experience necessary to be able to give you real-world
and tips that you cannot get from someone who is "just a trainer" or "just a book author."
About the Author's Writing Style: Technical, Yet Easy Reading
" book or a pure,
computer science reference book, my instructional experience indicates that an easy-to-read, yet technically oriented book serves our purpose the best, which is to get you up to speed on Python as quickly as possible so that you can apply it to your
. We will introduce concepts
with appropriate examples to expedite the learning process. At the end of each chapter you will find numerous exercises to
some of the concepts and ideas
in your reading.
We are thrilled and humbled to be compared with Bruce Eckel's writing style (see the reviews to the first edition at the book's Web site (http://corepython.com). This is not a dry college
. As the author, I am having a conversation with you, as if you were
one of my well-received Python training courses. As a
student, I constantly put
in my student's shoes and tell you what you need to hear in order to learn the concepts as quickly and as thoroughly as possible. You will find reading this book fast and easy, without losing sight of the technical details.
As an engineer, I know what I need to tell you in order to teach you a concept in Python. As a teacher, I can take technical details and boil them down into language that is easy to understand and grasp right away. You are getting the best of both
with my writing and teaching styles, but you will enjoy programming in Python even more.
About This Second Edition
At the time the first edition was published, Python was entering its second era with the release of version 2.0. Since then, the language has seen significant improvements contributing to the overall continuing success and acceptance of the language. Deficiencies have been removed and new features added that bring a new level of power and sophistication to Python developers worldwide. We are thrilled to be able to update this book yet still deliver easy reading along with comprehensive coverage of the exciting new features. This book includes changes to Python 2.5, released in the fall of 2006, and even some pre-announced features of 2.6 and beyond. As in the first edition, we aim to keep all of the topics relevant for readers regardless of the Python version you are using, extending the lifetime of this book, retarding its obsolescence.
Python is slowly going to be transitioning to the next big version change with a release affectionately called "Python 3000" by its creator, Guido van Rossum. This is just the marketing name for Python 3.0, or "Py3K" for short. It will be developed in parallel with the remaining 2.x releases. There will be some incompatibilities with older versions of Python; however, the core team will work hard to ensure that code will be
-compatible for the most part. (This is in tradition with any new Python release.) Look mostly for interesting additions to the language as well as the disappearance of old design flaws and deprecated features.
We will continue to update the book's Web site with white papers, updates, and other
articles to keep
Core Python Programming
as contemporary as possible, regardless of which new release of Python you have
The new topics we have added to this edition include:
Boolean and set types (Chapters 5 and 7)
New-style classes (Chapter 13)
Functions (Chapter 11)
Function (and method) decorators
Statically nested scoping
Currying and partial function application
Looping constructs (Chapter 8)
Extended import syntax (Chapter 12)
Improved exception handling features (Chapter 10)
In addition, we are proud to introduce three new chapters to the book: "Internet Client Programming" (Chapter 17), "Database Programming" (Chapter 21), and "Miscellaneous" (Chapter 23). These are a few intermediate areas where Python is used quite often. All existing chapters have been refreshed and updated to the latest versions of Python. Please see the chapter guide that
for more details.
This book is divided into two main sections. The first part, taking up about two-
of the text, gives you treatment of the "core" part of the language, and the second part provides a set of various advanced topics to show what you can build using Python.
Python is everywheresometimes it is amazing to discover who is using Python and what they are doing with itand although we would have loved to produce additional chapters on such topics as Java/Jython, Win32 programming, CGI processing with
, GUI programming with third-party toolkits (wxWidgets, GTK+, Qt, etc.), XML processing, numerical and scientific processing, visual and graphics image manipulation, and Web services and application frameworks (Zope, Plone, Django, TurboGears, and so on), there simply wasn't enough time to develop these topics into their own chapters. However, we are
glad that we were at least able to provide you with a good introduction to many of the key areas of Python development including some of the topics mentioned previously.
Here is a chapter-by-chapter guide.
Part I: Core Python
Chapter 1Welcome to Python!
We begin by introducing Python to you, its history, features, benefits, and so on, as well as how to obtain and install Python on your system.
Chapter 2Getting Started
If you are an
programmer and just want to see "how it's done" in Python, this is the right place to go. We introduce the basic Python concepts and statements, and because many of these will be familiar to you, you can simply learn the proper syntax in Python and get started right away on your projects without sacrificing too much reading time.
Chapter 3Syntax and Style
This section gives you a good overview of Python's syntax as well as style hints. You will also be exposed to Python's keywords and its memory management ability. Your first Python application will be presented at the end of the chapter to give you an idea of what real Python code looks like.
Chapter 4Python Objects
This chapter introduces Python objects. In addition to generic object attributes, we will show you all of Python's data types and operators, as well as show you different ways to categorize the standard types. Built-in functions that apply to most Python objects will also be covered.
In this chapter, we discuss Python's main numeric types: integers, floating point numbers, and complex numbers. We look at operators and built-in and factory functions which apply to all
, and we also
discuss a few other related types.
Chapter 6Sequences: Strings, Lists, and Tuples
Your first meaty chapter will expose you to all of Python's powerful sequence types: strings, lists, and tuples. We will show you all the built-in functions, methods, and special features, which apply to each type as well as all their operators.
Chapter 7Mapping and Set Types
Dictionaries are Python's mapping or hashing type. Like other data types, dictionaries also have operators and
built-in functions and methods. We also cover Python's set types in this chapter, discussing their operators, built-in and factory functions, and built-in methods.
Chapter 8Conditionals and
Like many other high-level languages, Python supports loops such as
, as well as
statements (and related). Python also has a built-in function called
which enables Python's
loop to behave more like a traditional counting loop rather than the "foreach" iterative type loop that it is. Also included is coverage of auxiliary statements such as
, as well as a discussion of
constructs like iterators, list comprehensions, and generator expressions.
Chapter 9Files and Input/Output
In addition to standard file objects and input/output, this chapter introduces you to file system access, file execution, and persistent storage.
Chapter 10Errors and Exceptions
One of Python's most powerful constructs is its exception handling ability. You can see a full treatment of it here, instruction on how to raise or throw exceptions, and more importantly, how to create your own exception classes.
Chapter 11Functions and Functional Programming
Creating and calling functions are relatively straightforward, but Python has many other features that you will find useful, such as default arguments, named or keyword arguments, variable-length arguments, and some functional programming constructs. We also dip into variable scope and recursion briefly. We will also discuss some advanced features such as generators, decorators, inner functions, closures, and partial function application (a more generalized form of currying).
One of Python's key strengths is its ability to be extended. This feature allows for "plug-and-play" access as well as promotes code reuse. Applications written as modules can be imported for use by other Python modules with a single line of code. Furthermore, multiple module software distribution can be simplified by using packages.
Chapter 13Object-Oriented Programming
Python is a fully object-oriented programming language and was designed that way from the beginning. However, Python does not require you to program in such a manneryou may continue to develop structural/procedural code as you like, and can transition to OO programming
you are ready to take advantage of its benefits. Likewise, this chapter is here to guide you through the concepts as well as advanced topics, such as operator overloading, customization, and delegation. Also included is coverage of new features specific to new-style classes, including slots, properties, descriptors, and metaclasses.
Chapter 14Execution Environment
"execution" can mean many different things, from callable and executable objects to running other programs (Python or
). We discuss these topics in this chapter, as well as controlling execution via the operating system interface and different ways of terminating execution.
Part II: Advanced Topics
Chapter 15Regular Expressions
Regular expressions are a powerful tool used for pattern matching, extracting, and
functionality. Learn about them here.
Chapter 16Network Programming
So many applications today need to be network-oriented. You have to start somewhere. In this chapter, you will learn to create clients and servers, using TCP/IP and UDP/IP, as well as get an introduction to
Chapter 17Internet Client Programming
In Chapter 16, we introduced network programming using sockets. Most Internet protocols in use today were developed using sockets. In this chapter, we explore some of these higher-level libraries, which are used to build clients of such Internet protocols. In particular, we focus on FTP, NNTP, SMTP, and POP3 clients.
Chapter 18Multithreaded Programming
Multithreaded programming is a powerful way to improve the execution performance of many types of application. This chapter ends the drought of written documentation on how to do threads in Python by explaining the concepts and showing you how to correctly build a Python multithreaded application.
Chapter 19GUI Programming
Based on the Tk graphical toolkit, Tkinter is Python's default GUI development module. We introduce Tkinter to you by showing you how to build simple sample GUI applications (say that ten times, real fast!). One of the best ways to learn is to copy, and by building on top of some of these applications, you will be on your way in no time. We conclude the chapter by presenting a more complex example, as well as take a brief look at Tix, Pmw, wxPython, and PyGTK.
Chapter 20Web Programming
Web programming using Python takes three main forms: Web clients, Web servers, and the popular Common Gateway Interface applications that help Web servers deliver dynamically-generated Web pages. We will cover them all in this chapter: simple and advanced Web clients and CGI applications, as well as how to build your own Web server.
Chapter 21Database Programming
What Python does for application programming carries to database programming as well. It is simplified, and you will find it fun! We first review basic database concepts, then introduce you to the Python database application programmer's interface (API). We then show you how you can connect to a relational database and perform queries and operations with Python. Finally, if you want hands-off using the Structured Query Language (SQL) and want to just work with objects without having to worry about the underlying database layer, we will introduce you to a few object-relational managers (ORMs), which simplify database programming to yet another level.
Chapter 22Extending Python
We mentioned earlier how powerful it is to be able to reuse code and extend the language. In pure Python, these extensions are modules, but you can also develop lower-level code in C, C++, or Java, and interface those with Python in a seamless fashion. Writing your extensions in a lower-level programming language gives you added performance and some security (because the source code does not have to be revealed). This chapter walks you step-by-step through the extension building process.
This new chapter consists of bonus material that we would like to develop into full, individual chapters in the next edition. Topics covered here include Web Services, Microsoft Office (Win32 COM Client) Programming, and Java/Jython.
Subsections or exercises
with an asterisk (
) may be
due to their advanced or optional nature. They are usually self-contained segments that can be addressed at another time.
Those of you with enough previous programming knowledge and who have set up their Python development environments can skip the first chapter and go straight to Chapter 2, "Getting Started," where you can
Python and be off to the races.
All program output and source code are in
font. Python keywords appear in
font. Lines of output with three leading greater than signs,
, represent the Python interpreter prompt.
"Core Notes" are highlighted with this logo.
"Core Style" notes are highlighted with this logo.
"Core Module" notes are highlighted with this logo.
"Core Tips" notes are highlighted with this logo.
New features to Python are highlighted with this logo. The version(s) of Python these features first appeared in is given inside the logo.
I welcome any and all feedback: the good, the bad, and the ugly. If you have any comments, suggestions, kudos, complaints, bugs, questions...anything at all, feel free to contact me at
You will find errata source code, updates, upcoming talks, Python training, downloads, and other information at the book's Web site located at: