##language:zh ''' 深入Python 5.4 版本,中文翻译! ''' ''建议使用 zhDiveIntoPyTemplate 文章模板!'' -- Zoom.Quiet [<>] <> = Dive Into Python = '''20 May 2004''' {{{Copyright © 2000, 2001, 2002, 2003, 2004 Mark Pilgrim}}} This book lives at http://diveintopython.org/. If you're reading it somewhere else, you may not have the latest version. Permission is granted to copy, distribute, and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in Appendix G, GNU Free Documentation License. The example programs in this book are free software; you can redistribute and/or modify them under the terms of the Python license as published by the Python Software Foundation. A copy of the license is included in Appendix H, Python license. == 章节索引 == === Installing Python === * [[/1.]] Installing Python * [[/1.1.]] Which Python is right for you? * [[/1.2.]] Python on Windows * [[/1.3.]] Python on Mac OS X * [[/1.4.]] Python on Mac OS 9 * [[/1.5.]] Python on RedHat Linux * [[/1.6.]] Python on Debian GNU/Linux * [[/1.7.]] Python Installation from Source * [[/1.8.]] The Interactive Shell * [[/1.9.]] Summary === Your First Python Program === * [[/2.]] Your First Python Program * [[/2.1.]] Diving in * [[/2.2.]] Declaring Functions * [[/2.2.1.]] How Python's Datatypes Compare to Other Programming Languages * [[/2.3.]] Documenting Functions * [[/2.4.]] Everything Is an Object * [[/2.4.1.]] The Import Search Path * [[/2.4.2.]] What's an Object? * [[/2.5.]] Indenting Code * [[/2.6.]] Testing Modules === Native Datatypes === * [[/3.]] Native Datatypes * [[/3.1.]] Introducing Dictionaries * [[/3.1.1.]] Defining Dictionaries * [[/3.1.2.]] Modifying Dictionaries * [[/3.1.3.]] Deleting Items From Dictionaries * [[/3.2.]] Introducing Lists * [[/3.2.1.]] Defining Lists * [[/3.2.2.]] Adding Elements to Lists * [[/3.2.3.]] Searching Lists * [[/3.2.4.]] Deleting List Elements * [[/3.2.5.]] Using List Operators * [[/3.3.]] Introducing Tuples * [[/3.4.]] Declaring variables * [[/3.4.1.]] Referencing Variables * [[/3.4.2.]] Assigning Multiple Values at Once * [[/3.5.]] Formatting Strings * [[/3.6.]] Mapping Lists * [[/3.7.]] Joining Lists and Splitting Strings * [[/3.7.1.]] Historical Note on String Methods * [[/3.8.]] Summary === The Power Of Introspection === * [[/4.]] The Power Of Introspection * [[/4.1.]] Diving In * [[/4.2.]] Using Optional and Named Arguments * [[/4.3.]] Using type, str, dir, and Other Built-In Functions * [[/4.3.1.]] The type Function * [[/4.3.2.]] The str Function * [[/4.3.3.]] Built-In Functions * [[/4.4.]] Getting Object References With getattr * [[/4.4.1.]] getattr with Modules * [[/4.4.2.]] getattr As a Dispatcher * [[/4.5.]] Filtering Lists * [[/4.6.]] The Peculiar Nature of and and or * [[/4.6.1.]] Using the and-or Trick * [[/4.7.]] Using lambda Functions * [[/4.7.1.]] Real-World lambda Functions * [[/4.8.]] Putting It All Together * [[/4.9.]] Summary === Objects and Object-Orientation === * [[/5.]] Objects and Object-Orientation * [[/5.1.]] Diving In * [[/5.2.]] Importing Modules Using from module import * [[/5.3.]] Defining Classes * [[/5.3.1.]] Initializing and Coding Classes * [[/5.3.2.]] Knowing When to Use self and __init__ * [[/5.4.]] Instantiating Classes * [[/5.4.1.]] Garbage Collection * [[/5.5.]] Exploring UserDict: A Wrapper Class * [[/5.6.]] Special Class Methods * [[/5.6.1.]] Getting and Setting Items * [[/5.7.]] Advanced Special Class Methods * [[/5.8.]] Introducing Class Attributes * [[/5.9.]] Private Functions * [[/5.10.]] Summary === Exceptions and File Handling === * [[/6.]] Exceptions and File Handling * [[/6.1.]] Handling Exceptions * [[/6.1.1.]] Using Exceptions For Other Purposes * [[/6.2.]] Working with File Objects * [[/6.2.1.]] Reading Files * [[/6.2.2.]] Closing Files * [[/6.2.3.]] Handling I/O Errors * [[/6.2.4.]] Writing to Files * [[/6.3.]] Iterating with for Loops * [[/6.4.]] Using sys.modules * [[/6.5.]] Working with Directories * [[/6.6.]] Putting It All Together * [[/6.7.]] Summary === Regular Expressions === * [[/7.]] Regular Expressions * [[/7.1.]] Diving In * [[/7.2.]] Case Study: Street Addresses * [[/7.3.]] Case Study: Roman Numerals * [[/7.3.1.]] Checking for Thousands * [[/7.3.2.]] Checking for Hundreds * [[/7.4.]] Using the {n,m} Syntax * [[/7.4.1.]] Checking for Tens and Ones * [[/7.5.]] Verbose Regular Expressions * [[/7.6.]] Case study: Parsing Phone Numbers * [[/7.7.]] Summary === HTML Processing === * [[/8.]] HTML Processing * [[/8.1.]] Diving in * [[/8.2.]] Introducing sgmllib.py * [[/8.3.]] Extracting data from HTML documents * [[/8.4.]] Introducing BaseHTMLProcessor.py * [[/8.5.]] locals and globals * [[/8.6.]] Dictionary-based string formatting * [[/8.7.]] Quoting attribute values * [[/8.8.]] Introducing dialect.py * [[/8.9.]] Putting it all together * [[/8.10.]] Summary === XML Processing === * [[/9.]] XML Processing * [[/9.1.]] Diving in * [[/9.2.]] Packages * [[/9.3.]] Parsing XML * [[/9.4.]] Unicode * [[/9.5.]] Searching for elements * [[/9.6.]] Accessing element attributes * [[/9.7.]] Segue === Scripts and Streams === * [[/10.]] Scripts and Streams * [[/10.1.]] Abstracting input sources * [[/10.2.]] Standard input, output, and error * [[/10.3.]] Caching node lookups * [[/10.4.]] Finding direct children of a node * [[/10.5.]] Creating separate handlers by node type * [[/10.6.]] Handling command-line arguments * [[/10.7.]] Putting it all together * [[/10.8.]] Summary === HTTP Web Services === * [[/11.]] HTTP Web Services * [[/11.1.]] Diving in * [[/11.2.]] How not to fetch data over HTTP * [[/11.3.]] Features of HTTP * [[/11.3.1.]] User-Agent * [[/11.3.2.]] Redirects * [[/11.3.3.]] Last-Modified/If-Modified-Since * [[/11.3.4.]] ETag/If-None-Match * [[/11.3.5.]] Compression * [[/11.4.]] Debugging HTTP web services * [[/11.5.]] Setting the User-Agent * [[/11.6.]] Handling Last-Modified and ETag * [[/11.7.]] Handling redirects * [[/11.8.]] Handling compressed data * [[/11.9.]] Putting it all together * [[/11.10.]] Summary === SOAP Web Services === * [[/12.]] SOAP Web Services * [[/12.1.]] Diving In * [[/12.2.]] Installing the SOAP Libraries * [[/12.2.1.]] Installing PyXML * [[/12.2.2.]] Installing fpconst * [[/12.2.3.]] Installing SOAPpy * [[/12.3.]] First Steps with SOAP * [[/12.4.]] Debugging SOAP Web Services * [[/12.5.]] Introducing WSDL * [[/12.6.]] Introspecting SOAP Web Services with WSDL * [[/12.7.]] Searching Google * [[/12.8.]] Troubleshooting SOAP Web Services * [[/12.9.]] Summary === Unit Testing === * [[/13.]] Unit Testing * [[/13.1.]] Introduction to Roman numerals * [[/13.2.]] Diving in * [[/13.3.]] Introducing romantest.py * [[/13.4.]] Testing for success * [[/13.5.]] Testing for failure * [[/13.6.]] Testing for sanity === Test-First Programming === * [[/14.]] Test-First Programming * [[/14.1.]] roman.py, stage 1 * [[/14.2.]] roman.py, stage 2 * [[/14.3.]] roman.py, stage 3 * [[/14.4.]] roman.py, stage 4 * [[/14.5.]] roman.py, stage 5 === Refactoring === * [[/15.]] Refactoring * [[/15.1.]] Handling bugs * [[/15.2.]] Handling changing requirements * [[/15.3.]] Refactoring * [[/15.4.]] Postscript * [[/15.5.]] Summary === Functional Programming === * [[/16.]] Functional Programming * [[/16.1.]] Diving in * [[/16.2.]] Finding the path * [[/16.3.]] Filtering lists revisited * [[/16.4.]] Mapping lists revisited * [[/16.5.]] Data-centric programming * [[/16.6.]] Dynamically importing modules * [[/16.7.]] Putting it all together * [[/16.8.]] Summary === Dynamic functions === * [[/17.]] Dynamic functions * [[/17.1.]] Diving in * [[/17.2.]] plural.py, stage 1 * [[/17.3.]] plural.py, stage 2 * [[/17.4.]] plural.py, stage 3 * [[/17.5.]] plural.py, stage 4 * [[/17.6.]] plural.py, stage 5 * [[/17.7.]] plural.py, stage 6 * [[/17.8.]] Summary === Performance Tuning === * [[/18.]] Performance Tuning * [[/18.1.]] Diving in * [[/18.2.]] Using the timeit Module * [[/18.3.]] Optimizing Regular Expressions * [[/18.4.]] Optimizing Dictionary Lookups * [[/18.5.]] Optimizing List Operations * [[/18.6.]] Optimizing String Manipulation ==== Summary ==== * [[/18.7.]] Summary * [[/A.]] Further reading * [[/B.]] A 5-minute review * [[/C.]] Tips and tricks * [[/D.]] List of examples * [[/E.]] Revision history * [[/F.]] About the book * [[/G.]] GNU Free Documentation License * [[/G.0.]] Preamble * [[/G.1.]] Applicability and definitions * [[/G.2.]] Verbatim copying * [[/G.3.]] Copying in quantity * [[/G.4.]] Modifications * [[/G.5.]] Combining documents * [[/G.6.]] Collections of documents * [[/G.7.]] Aggregation with independent works * [[/G.8.]] Translation * [[/G.9.]] Termination * [[/G.10.]] Future revisions of this license * [[/G.11.]] How to use this License for your documents * [[/H.]] Python license * [[/H.A.]] History of the software * [[/H.B.]] Terms and conditions for accessing or otherwise using Python * [[/H.B.1.]] PSF license agreement * [[/H.B.2.]] BeOpen Python open source license agreement version 1 * [[/H.B.3.]] CNRI open source GPL-compatible license agreement * [[/H.B.4.]] CWI permissions statement and disclaimer == Wiki小工具 == * 手工加 Wiki 的页面声明太 SB 了! * Python 来帮忙! {{{ f=open("DinPy",'r') s=f.read() #print s import re def wikiName(matchobj): return " * [\"/%s\"] "%matchobj.group(0)[:-1] key = re.compile(r"(^\w[.|0-9a-zA-Z]+?)\s",re.M) r=re.sub(key,wikiName,s) print r open("DinPy.wiki",'w').write(r) }}}