1、Beginning PythonFrom Novice to Professional, Second EditionMagnus Lie HetlandBeginning Python: From Novice to Professional, Second EditionCopyright 2008 by Magnus Lie HetlandAll rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanic
2、al, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher.ISBN-13 (pbk): 978-1-59059-982-2ISBN-10 (pbk): 1-59059-982-9ISBN-13 (electronic): 978-1-4302-0634-7Printed and bound in the United S
3、tates of America 9 8 7 6 5 4 3 2 1Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark.Lea
4、d Editor: Frank PohlmannTechnical Reviewers: Gregg Bolinger, Richard TaylorEditorial Board: Clay Andres, Steve Anglin, Ewan Buckingham, Tony Campbell, Gary Cornell, Jonathan Gennick, Matthew Moodie, Joseph Ottinger, Jeffrey Pepper, Frank Pohlmann, Ben Renow-Clarke, Dominic Shakeshaft, Matt Wade, Tom
5、 WelshProject Manager: Richard Dal PortoCopy Editor: Marilyn SmithAssociate Production Director: Kari Brooks-CoponyProduction Editor: Liz BerryCompositor: Pat ChristensonProofreader: April EddyIndexer: John CollinCover Designer: Kurt KramesManufacturing Director: Tom DebolskiDistributed to the book
6、trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail orders-nyspringer-, or visit http:/. For information on translations, please contact Apress directly at 2855 Telegraph Avenue, Suite 600, Berkeley, CA 9
7、4705. Phone 510-549-5930, fax 510-549-5939, e-mail , or visit http:/. Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Special Bulk SaleseBook Licen
8、sing web page at http:/ information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused
9、 or alleged to be caused directly or indirectly by the information contained in this work. The source code for this book is available to readers at http:/. ivContents at a GlanceAbout the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10、 . . . . . . . . . xxiiiAbout the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxvPreface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11、 . . .xxviiIntroduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxixCHAPTER 1 Instant Hacking: The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1CHAPTER 2 Lists and Tuples . .
12、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31CHAPTER 3 Working with Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53CHAPTER 4 Dictionaries: When Indices Wont Do . . . . . . . . . . . . . . . . . . . . . . . . . .
13、69CHAPTER 5 Conditionals, Loops, and Some Other Statements . . . . . . . . . . . . . . 83CHAPTER 6 Abstraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113CHAPTER 7 More Abstraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14、 . . . . . . . . . . . . 141CHAPTER 8 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161CHAPTER 9 Magic Methods, Properties, and Iterators . . . . . . . . . . . . . . . . . . . . . 175CHAPTER 10 Batteries Included . . . . . . . . . . . .
15、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209CHAPTER 11 Files and Stuff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261CHAPTER 12 Graphical User Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277CHAP
16、TER 13 Database Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293CHAPTER 14 Network Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305CHAPTER 15 Python and the Web. . . . . . . . . . . . . . . . . . . . . . . . .
17、 . . . . . . . . . . . . . . . . 321CHAPTER 16 Testing, 1-2-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349CHAPTER 17 Extending Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365CHAPTER 18 Packaging Your
18、Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383CHAPTER 19 Playful Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393CHAPTER 20 Project 1: Instant Markup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19、. . 403CHAPTER 21 Project 2: Painting a Pretty Picture . . . . . . . . . . . . . . . . . . . . . . . . . . . 425CHAPTER 22 Project 3: XML for All Occasions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435CHAPTER 23 Project 4: In the News. . . . . . . . . . . . . . . . . . . . . . . . .
20、. . . . . . . . . . . . . . 453vCHAPTER 24 Project 5: A Virtual Tea Party . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469CHAPTER 25 Project 6: Remote Editing with CGI . . . . . . . . . . . . . . . . . . . . . . . . . . . 489CHAPTER 26 Project 7: Your Own Bulletin Board . . . . .
21、. . . . . . . . . . . . . . . . . . . . . . 499CHAPTER 27 Project 8: File Sharing with XML-RPC . . . . . . . . . . . . . . . . . . . . . . . . 517CHAPTER 28 Project 9: File Sharing IINow with GUI! . . . . . . . . . . . . . . . . . . . . . 537CHAPTER 29 Project 10: Do-It-Yourself Arcade Game . . . .
22、. . . . . . . . . . . . . . . . . . 547APPENDIX A The Short Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569APPENDIX B Python Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579APPENDIX C Online Resource
23、s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595APPENDIX D Python 3.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607viiContentsAbout the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiiiAbout the Technical Reviewer. . . . . . . . . . . . . . . . . . . . . . .
25、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvPreface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxviiIntroduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxixCHAPTER 1 Instant Hacking: The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Installing Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Wind
27、ows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Linux and UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Macintosh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28、. . . . . . . . . . . 5Other Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Keeping in Touch and Up-to-Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7The Interactive Interpreter. . . . . . . . . . . . . . . . . . . . . . . . . . .
29、. . . . . . . . . . . . . . 7Algo . . . What? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Numbers and Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Large Integers . . . . . . . . . . . . . . . .
30、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Hexadecimals and Octals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Statements. . . . . .
31、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Getting Input from the User. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32、 . . . . . . . . . . 16Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17cmath and Complex Numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Back to the _future_ . . . . . . . . . . . . . . . . . . . . . . .
33、 . . . . . . . . . . . . . . 19Saving and Executing Your Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Running Your Python Scripts from a Command Prompt. . . . . . . . . . 20Making Your Scripts Behave Like Normal Programs . . . . . . . . . . . . 20Comments . . . . . . . . .
34、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22viii CONTENTS Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Single-Quoted Strings and Escaping Quotes . . . . . . . . . . . . . . . . . . . 23Co
35、ncatenating Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24String Representations, str and repr . . . . . . . . . . . . . . . . . . . . . . . . . . 24input vs. raw_input. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Long Str
36、ings, Raw Strings, and Unicode. . . . . . . . . . . . . . . . . . . . . . . 26A Quick Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29New Functions in This Chapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30What Now? . . . .
37、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30CHAPTER 2 Lists and Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Sequence Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38、 . . . . . . . 31Common Sequence Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Slicing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39、 . . . . . . . . . . . . . . . . . . . 34Adding Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Membership . . . . . . . . . . . . . . . . . . .
40、. . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Length, Minimum, and Maximum . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Lists: Pythons Workhorse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40The list Function . . . . . . . . . . . . . . . .
41、 . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Basic List Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41List Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Tuples: Immutable Sequences . . .
42、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49The tuple Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50Basic Tuple Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50So Whats the Point? . . . . .
43、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51A Quick Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51New Functions in This Chapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52What Now? . . . . . . . .
44、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52CHAPTER 3 Working with Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Basic String Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45、. 53String Formatting: The Short Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53CONTENTS ixString Formatting: The Long Version. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Simple Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46、 . . . . . . 57Width and Precision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57Signs, Alignment, and Zero-Padding . . . . . . . . . . . . . . . . . . . . . . . . . . 58String Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47、 . . . . . . . . . 60find. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61lower . . . . . . . . . . . . . . . . . . . .
48、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62replace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63split . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63stri
49、p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64translate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64A Quick Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66New Functions in This Chapter. . . . . . . . . . . . . . . . . . . . . . . . . .