SKIP THE SHIPPING
Use code NOSHIP during checkout to save 40% on eligible eBooks, now through January 5. Shop now.
Register your product to gain access to bonus material or receive a coupon.
Praise for Core Python Programming
"The long-awaited second edition of Wesley Chun's Core Python Programming proves to be well worth the wait—its deep and broad coverage and useful exercises will help readers learn and practice good Python."
—Alex Martelli, author of Python in a Nutshell and editor of Python Cookbook
"There has been lot of good buzz around Wesley Chun's Core Python Programming. It turns out that all the buzz is well earned. I think this is the best book currently available for learning Python. I would recommend Chun's book over Learning Python (O'Reilly), Programming Python (O'Reilly), or The Quick Python Book (Manning)."
—David Mertz, Ph.D., IBM DeveloperWorks®
"I have been doing a lot of research [on] Python for the past year and have seen a number of positive reviews of your book. The sentiment expressed confirms the opinion that Core Python Programming is now considered the standard introductory text."
—Richard Ozaki, Lockheed Martin
"Finally, a book good enough to be both a textbook and a reference on the Python language now exists."
—Michael Baxter, Linux Journal
"Very well written. It is the clearest, friendliest book I have come across yet for explaining Python, and putting it in a wider context. It does not presume a large amount of other experience. It does go into some important Python topics carefully and in depth. Unlike too many beginner books, it never condescends or tortures the reader with childish hide-and-seek prose games. [It] sticks to gaining a solid grasp of Python syntax and structure."
—http://python.org bookstore Web site
"[If ] I could only own one Python book, it would be Core Python Programming by Wesley Chun. This book manages to cover more topics in more depth than Learning Python but includes it all in one book that also more than adequately covers the core language. [If] you are in the market for just one book about Python, I recommend this book. You will enjoy reading it, including its wry programmer's wit. More importantly, you will learn Python. Even more importantly, you will find it invaluable in helping you in your day-to-day Python programming life. Well done, Mr. Chun!"
—Ron Stephens, Python Learning Foundation
"I think the best language for beginners is Python, without a doubt. My favorite book is Core Python Programming."
—s003apr, MP3Car.com Forums
"Personally, I really like Python. It's simple to learn, completely intuitive, amazingly flexible, and pretty darned fast. Python has only just started to claim mindshare in the Windows world, but look for it to start gaining lots of support as people discover it. To learn Python, I'd start with Core Python Programming by Wesley Chun."
—Bill Boswell, MCSE, Microsoft Certified Professional Magazine Online
"If you learn well from books, I suggest Core Python Programming. It is by far the best I've found. I'm a Python newbie as well and in three months time I've been able to implement Python in projects at work (automating MSOffice, SQL DB stuff, etc.)."
—ptonman, Dev Shed Forums
"Python is simply a beautiful language. It's easy to learn, it's cross-platform, and it works. It has achieved many of the technical goals that Java strives for. A one-sentence description of Python would be: 'All other languages appear to have evolved over time--but Python was designed.' And it was designed well. Unfortunately, there aren't a large number of books for Python. The best one I've run across so far is Core Python Programming."
—Chris Timmons, C. R. Timmons Consulting
"If you like the Prentice Hall Core series, another good full-blown treatment to consider would be Core Python Programming. It addresses in elaborate concrete detail many practical topics that get little, if any, coverage in other books."
—Mitchell L Model, MLM Consulting
"Core Python Programming is an amazingly easy read! The liberal use of examples helps clarify some of the more subtle points of the language. And the comparisons to languages with which I'm already familiar (C/C++/Java) get you programming in record speed."
—Michael Santos, Ph.D., Green Hills Software
The Complete Developer's Guide to PythonPython is an agile, robust, expressive, fully object-oriented, extensible, and scalable programming language. It combines the power of compiled languages with the simplicity and rapid development of scripting languages. In Core Python Programming, Second Edition, leading Python developer and trainer Wesley Chun helps you learn Python quickly and comprehensively so that you can immediately succeed with any Python project.
Using practical code examples, Chun introduces all the fundamentals of Python programming: syntax, objects and memory management, data types, operators, files and I/O, functions, generators, error handling and exceptions, loops, iterators, functional programming, object-oriented programming and more. After you learn the core fundamentals of Python, he shows you what you can do with your new skills, delving into advanced topics, such as regular expressions, networking programming with sockets, multithreading, GUI development, Web/CGI programming and extending Python in C.
This edition reflects major enhancements in the Python 2.x series, including 2.6 and tips for migrating to 3. It contains new chapters on database and Internet client programming, plus coverage of many new topics, including new-style classes, Java and Jython, Microsoft Office (Win32 COM Client) programming, and much more.
Core Python Programming delivers
1.1 What Is Python? 5
1.2 Origins 6
1.3 Features 6
1.4 Downloading and Installing Python 11
1.5 Running Python 13
1.6 Python Documentation 22
1.7 Comparing Python 23
1.8 Other Implementations 26
1.9 Exercises 27
2.1 Program Output, the print Statement, and "Hello World!" 32
2.2 Program Input and the raw_input() Built-in Function 33
2.3 Comments 35
2.4 Operators 35
2.5 Variables and Assignment 37
2.6 Numbers 37
2.7 Strings 39
2.8 Lists and Tuples 40
2.9 Dictionaries 40
2.10 Code Blocks Use Indentation 41
2.11 if Statement 41
2.12 while Loop 42
2.13 for Loop and the range() Built-in Function 43
2.14 List Comprehensions 45
2.15 Files and the open() and file() Built-in Functions 46
2.16 Errors and Exceptions 47
2.17 Functions 48
2.18 Classes 50
2.19 Modules 52
2.20 Useful Functions 54
2.21 Exercises 55
3.1 Statements and Syntax 61
3.2 Variable Assignment 64
3.3 Identifiers 67
3.4 Basic Style Guidelines 69
3.5 Memory Management 75
3.6 First Python Programs 79
3.7 Related Modules/Developer Tools 84
3.8 Exercises 85
4.1 Python Objects 89
4.2 Other Built-in Types 91
4.3 Internal Types 93
4.4 Standard Type Operators 96
4.5 Standard Type Built-in Functions 101
4.6 Categorizing the Standard Types 111
4.7 Unsupported Types 116
4.8 Exercises 117
5.1 Introduction to Numbers 121
5.2 Integers 122
5.3 Double Precision Floating Point Numbers 125
5.4 Complex Numbers 126
5.5 Operators 127
5.6 Built-in and Factory Functions 136
5.7 Other Numeric Types 145
5.8 Related Modules 148
5.9 Exercises 151
6.1 Sequences 158
6.2 Strings 168
6.3 Strings and Operators 170
6.4 String-Only Operators 178
6.5 Built-in Functions 184
6.6 String Built-in Methods 188
6.7 Special Features of Strings 192
6.8 Unicode 197
6.9 Related Modules 206
6.10 Summary of String Highlights 208
6.11 Lists 209
6.12 Operators 211
6.13 Built-in Functions 216
6.14 List Type Built-in Methods 220
6.15 Special Features of Lists 224
6.16 Tuples 232
6.17 Tuple Operators and Built-in Functions 233
6.18 Special Features of Tuples 235
6.19 Related Modules 239
6.20 *Copying Python Objects and Shallow and Deep Copies 240
6.21 Summary of Sequences 243
6.22 Exercises 246
7.1 Mapping Type: Dictionaries 253
7.2 Mapping Type Operators 258
7.3 Mapping Type Built-in and Factory Functions 260
7.4 Mapping Type Built-in Methods 265
7.5 Dictionary Keys 268
7.6 Set Types 273
7.7 Set Type Operators 276
7.8 Built-in Functions 280
7.9 Set Type Built-in Methods 281
7.10 Operator, Function/Method Summary Table for Set Types 283
7.11 Related Modules 283
7.12 Exercises 285
8.1 if Statement 291
8.2 else Statement 292
8.3 elif (aka else-if) Statement 294
8.4 Conditional Expressions (aka "the Ternary Operator") 295
8.5 while Statement 296
8.6 for Statement 298
8.7 break Statement 304
8.8 continue Statement 305
8.9 pass Statement 306
8.10 else Statement . . . Take Two 307
8.11 Iterators and the iter() Function 309
8.12 List Comprehensions 313
8.13 Generator Expressions 315
8.14 Related Modules 320
8.15 Exercises 320
9.1 File Objects 325
9.2 File Built-in Functions [open() and file()] 326
9.3 File Built-in Methods 329
9.4 File Built-in Attributes 336
9.5 Standard Files 337
9.6 Command-Line Arguments 338
9.7 File System 339
9.8 File Execution 348
9.9 Persistent Storage Modules 348
9.10 Related Modules 351
9.11 Exercises 353
10.1 What Are Exceptions? 360
10.2 Exceptions in Python 361
10.3 Detecting and Handling Exceptions 364
10.4 Context Management 382
10.5 *Exceptions as Strings 386
10.6 Raising Exceptions 386
10.7 Assertions 389
10.8 Standard Exceptions 391
10.9 *Creating Exceptions 394
10.10 Why Exceptions (Now)? 401
10.11 Why Exceptions at All? 402
10.12 Exceptions and the sys Module 403
10.13 Related Modules 404
10.14 Exercises 405
11.1 What Are Functions? 408
11.2 Calling Functions 409
11.3 Creating Functions 412
11.4 Passing Functions 418
11.5 Formal Arguments 428
11.6 Variable-Length Arguments 433
11.7 Functional Programming 439
11.8 Variable Scope 453
11.9 Recursion 466
11.10 Generators 467
11.11 Exercises 471
12.1 What Are Modules? 477
12.2 Modules and Files 478
12.3 Namespaces 480
12.4 Importing Modules 484
12.5 Features of Module Import 486
12.6 Module Built-in Functions 491
12.7 Packages 493
12.8 Other Features of Modules 496
12.9 Related Modules 500
12.10 Exercises 501
13.1 Introduction 506
13.2 Object-Oriented Programming 514
13.3 Classes 518
13.4 Class Attributes 520
13.5 Instances 526
13.6 Instance Attributes 531
13.7 Binding and Method Invocation 540
13.8 Static Methods and Class Methods 542
13.9 Composition 544
13.10 Subclassing and Derivation 545
13.11 Inheritance 547
13.12 Built-in Functions for Classes, Instances, and Other Objects 558
13.13 Customizing Classes with Special Methods 564
13.14 Privacy 585
13.15 *Delegation 587
13.16 Advanced Features of New-Style Classes (Python 2.2+) 595
13.17 Related Modules and Documentation 615
13.18 Exercises 618
14.1 Callable Objects 628
14.2 Code Objects 635
14.3 Executable Object Statements and Built-in Functions 636
14.4 Executing Other (Python) Programs 649
14.5 Executing Other (Non-Python) Programs 653
14.6 Restricted Execution 663
14.7 Terminating Execution 663
14.8 Miscellaneous Operating System Interface 666
14.9 Related Modules 668
14.10 Exercises 668
15.1 Introduction/Motivation 673
15.2 Special Symbols and Characters 676
15.3 REs and Python 683
15.4 Regular Expressions Example 698
15.5 Exercises 705
16.1 Introduction 711
16.2 Sockets: Communication Endpoints 715
16.3 Network Programming in Python 718
16.4 *SocketServer Module 732
16.5* Introduction to the Twisted Framework 737
16.6 Related Modules 741
16.7 Exercises 742
17.1 What Are Internet Clients? 747
17.2 Transferring Files 748
17.3 Network News 756
17.4 Electronic Mail 766
17.5 Related Modules 778
17.6 Exercises 779
18.1 Introduction/Motivation 787
18.2 Threads and Processes 789
18.3 Python, Threads, and the Global Interpreter Lock 790
18.4 thread Module 795
18.5 threading Module 800
18.6 Related Modules 814
18.7 Exercises 814
19.1 Introduction 819
19.2 Tkinter and Python Programming 821
19.3 Tkinter Examples 826
19.4 Brief Tour of Other GUIs 840
19.5 Related Modules and Other GUIs 848
19.6 Exercises 851
20.1 Introduction 855
20.2 Web Surfing with Python: Creating Simple Web Clients 859
20.3 Advanced Web Clients 869
20.4 CGI: Helping Web Servers Process Client Data 875
20.5 Building CGI Applications 878
20.6 Using Unicode with CGI 892
20.7 Advanced CGI 894
20.8 Web (HTTP) Servers 906
20.9 Related Modules 909
20.10 Exercises 913
21.1 Introduction 919
21.2 Python Database Application Programmer's Interface (DB-API) 924
21.3 Object-Relational Managers (ORMs) 946
21.4 Related Modules 958
21.5 Exercises 960
22.1 Introduction/Motivation 963
22.2 Extending Python by Writing Extensions 965
22.3 Related Topics 981
22.4 Exercises 982
23.1 Web Services 985
23.2 Programming Microsoft Office with Win32 COM 989
23.3 Python and Java Programming with Jython 1002
23.4 Exercises 1006
Welcome to Core Python Programming!
We are delighted that you have engaged us to help you learn Python as quickly and as in-depth 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 program in Python, but you will write more effective 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 hammer the concepts home, you will also find fun and challenging exercises at the end of every chapter. These easy and intermediate exercises are meant 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
This book differs from other Python books on the market by presenting a broad range of topics, providing numerous 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 targeted 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 regard 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 turn into building blocks to understanding and then can be incorporated into larger applications as well. There are line-by-line explanations for most of the larger programs in the book. The abundant interpreter code snippets scattered 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 bugs in your code before 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 copied 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 encourage 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 years! 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, informa*tion 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:
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
I discovered Python over a decade 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 next product: the Rocketmail Web-based e-mail service that would eventually evolve 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 name a few. I was the lead engineer for People Search.
Although Python was new to me then, it was fairly easy to pick upmuch simpler than other languages I had learned in the past. The scarcity of textbooks 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 timely manner. I have also developed several Python courses and have used this book to
Download the Index file from this book.