ebook img

Programming in Python 3 - Personal webpages at NTNU PDF

636 Pages·2010·6.28 MB·English
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Programming in Python 3 - Personal webpages at NTNU

Programming in Python 3 A Complete Introduction to the Python Language Second Edition Mark Summerfield Upper Saddle River, NJ · Boston · Indianapolis · San Francisco New York · Toronto ·Montreal · London ·Munich · Paris ·Madrid Capetown · Sydney · Tokyo · Singapore ·Mexico City Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals. The author and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. The publisher offers excellent discounts on this book when ordered in quantity for bulk purchases or special sales, which may include electronic versions and/or custom covers and content particular to your business, training goals, marketing focus, and branding interests. For more information, please contact: U.S. Corporate and Government Sales (800) 382-3419 Contents at a Glance List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Chapter 1. Rapid Introduction to Procedural Programming . . . 9 Chapter 2. Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Chapter 3. Collection Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Chapter 4. Control Structures and Functions . . . . . . . . . . . . . . . . . . . 159 Chapter 5. Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Chapter 6. Object-Oriented Programming . . . . . . . . . . . . . . . . . . . . . . 233 Chapter 7. File Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Chapter 8. Advanced Programming Techniques . . . . . . . . . . . . . . . . 339 Chapter 9. Debugging, Testing, and Profiling . . . . . . . . . . . . . . . . . . . 413 Chapter 10. Processes and Threading . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Chapter 11. Networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 Chapter 12. Database Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 Chapter 13. Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 Chapter 14. Introduction to Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 Chapter 15. Introduction to GUI Programming . . . . . . . . . . . . . . . . . 569 Epilogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 Selected Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 www.qtrac.eu/py3book.html Contents List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Chapter 1. Rapid Introduction to Procedural Programming . . . 9 Creating and Running Python Programs . . . . . . . . . . . . . . . . . . . . . . . . 9 Python’s “Beautiful Heart” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Piece #1: Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Piece #2: Object References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Piece #3: Collection Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Piece #4: Logical Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Piece #5: Control Flow Statements . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Piece #6: Arithmetic Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Piece #7: Input/Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Piece #8: Creating and Calling Functions . . . . . . . . . . . . . . . . . . . . 36 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 bigdigits.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 generate_grid.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Chapter 2. Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Identifiers and Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Integral Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Booleans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Floating-Point Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Floating-Point Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Complex Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Decimal Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Comparing Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Slicing and Striding Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 String Operators and Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 ix String Formatting with the str.format() Method . . . . . . . . . . . . . . 78 Character Encodings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 quadratic.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 csv2html.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Chapter 3. Collection Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Sequence Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Named Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Set Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Frozen Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Mapping Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Default Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Ordered Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Iterating and Copying Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Iterators and Iterable Operations and Functions . . . . . . . . . . . . . 138 Copying Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 generate_usernames.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 statistics.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Chapter 4. Control Structures and Functions . . . . . . . . . . . . . . . . . . . 159 Control Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Conditional Branching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Looping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Exception Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Catching and Raising Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Custom Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Custom Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Names and Docstrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Argument and Parameter Unpacking . . . . . . . . . . . . . . . . . . . . . . . 177 x Accessing Variables in the Global Scope . . . . . . . . . . . . . . . . . . . . . 180 Lambda Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Assertions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Example:make_html_skeleton.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Chapter 5. Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Modules and Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 CustomModules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Overview of Python’s Standard Library . . . . . . . . . . . . . . . . . . . . . . . . . . 212 String Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Command-Line Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Mathematics and Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Times and Dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Algorithms and Collection Data Types . . . . . . . . . . . . . . . . . . . . . . . 217 File Formats, Encodings, and Data Persistence . . . . . . . . . . . . . . . 219 File, Directory, and Process Handling . . . . . . . . . . . . . . . . . . . . . . . . 222 Networking and Internet Programming . . . . . . . . . . . . . . . . . . . . . 225 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 Other Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Chapter 6. Object-Oriented Programming . . . . . . . . . . . . . . . . . . . . . . 233 The Object-Oriented Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 Object-Oriented Concepts and Terminology . . . . . . . . . . . . . . . . . . 235 Custom Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 Attributes and Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 Inheritance and Polymorphism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 Using Properties to Control Attribute Access . . . . . . . . . . . . . . . . 246 Creating Complete Fully Integrated Data Types . . . . . . . . . . . . . 248 Custom Collection Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 Creating Classes That Aggregate Collections . . . . . . . . . . . . . . . . 261 Creating Collection Classes Using Aggregation . . . . . . . . . . . . . . 269 Creating Collection Classes Using Inheritance . . . . . . . . . . . . . . . 276 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 xi Chapter 7. File Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Writing and Reading Binary Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Pickles with Optional Compression . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Raw Binary Data with Optional Compression . . . . . . . . . . . . . . . 295 Writing and Parsing Text Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 Writing Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 Parsing Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 Parsing Text Using Regular Expressions . . . . . . . . . . . . . . . . . . . . 310 Writing and Parsing XML Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 Element Trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 DOM (Document Object Model) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 Manually Writing XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 Parsing XML with SAX (Simple API for XML) . . . . . . . . . . . . . . . 321 Random Access Binary Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 A Generic BinaryRecordFile Class . . . . . . . . . . . . . . . . . . . . . . . . . . 324 Example: The BikeStock Module’s Classes . . . . . . . . . . . . . . . . . . . 332 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Chapter 8. Advanced Programming Techniques . . . . . . . . . . . . . . . . 339 Further Procedural Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 Branching Using Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 Generator Expressions and Functions . . . . . . . . . . . . . . . . . . . . . . . 341 Dynamic Code Execution and Dynamic Imports . . . . . . . . . . . . . . 344 Local and Recursive Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 Function and Method Decorators . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 Function Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 Further Object-Oriented Programming . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Controlling Attribute Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Functors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Context Managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 Class Decorators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 Abstract Base Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 Multiple Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 Metaclasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 Functional-Style Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 Partial Function Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 xii Coroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 Example: Valid.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 Chapter 9. Debugging, Testing, and Profiling . . . . . . . . . . . . . . . . . . . 413 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 Dealing with Syntax Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 Dealing with Runtime Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 Scientific Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 Unit Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 Profiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 Chapter 10. Processes and Threading . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Using the Multiprocessing Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 Using the Threading Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 Example: A Threaded Find Word Program . . . . . . . . . . . . . . . . . . . 446 Example: A Threaded Find Duplicate Files Program . . . . . . . . . 449 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 Chapter 11. Networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 Creating a TCP Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 Creating a TCP Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 Chapter 12. Database Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 DBM Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 SQL Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 Chapter 13. Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 Python’s Regular Expression Language . . . . . . . . . . . . . . . . . . . . . . . . . . 490 Characters and Character Classes . . . . . . . . . . . . . . . . . . . . . . . . . . 490 Quantifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 Grouping and Capturing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 Assertions and Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 The Regular Expression Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 xiii Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 Chapter 14. Introduction to Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 BNF Syntax and Parsing Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 Writing Handcrafted Parsers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Simple Key–Value Data Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Playlist Data Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 Parsing the Blocks Domain-Specific Language . . . . . . . . . . . . . . . 525 Pythonic Parsing with PyParsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 A Quick Introduction to PyParsing . . . . . . . . . . . . . . . . . . . . . . . . . . 535 Simple Key–Value Data Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 Playlist Data Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 Parsing the Blocks Domain-Specific Language . . . . . . . . . . . . . . . 543 Parsing First-Order Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548 Lex/Yacc-Style Parsing with PLY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 Simple Key–Value Data Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 Playlist Data Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 Parsing the Blocks Domain-Specific Language . . . . . . . . . . . . . . . 559 Parsing First-Order Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 Exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 Chapter 15. Introduction to GUI Programming . . . . . . . . . . . . . . . . . 569 Dialog-Style Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 Main-Window-Style Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 Creating a Main Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 Creating a Custom Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 Epilogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 Selected Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 xiv List of Tables 2.1. Python’s Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.2. Numeric Operators and Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.3. Integer Conversion Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.4. Integer Bitwise Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 2.5. The Math Module’s Functions and Constants #1 . . . . . . . . . . . . . . 60 2.6. The Math Module’s Functions and Constants #2 . . . . . . . . . . . . . . 61 2.7. Python’s String Escapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 2.8. String Methods #1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 2.9. String Methods #2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 2.10. String Methods #3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.1. List Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 3.2. Set Methods and Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 3.3. Dictionary Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 3.4. Common Iterable Operators and Functions . . . . . . . . . . . . . . . . . . . 140 6.1. Comparison Special Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 6.2. Fundamental Special Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 6.3. Numeric and Bitwise Special Methods . . . . . . . . . . . . . . . . . . . . . . . 253 6.4. Collection Special Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 7.1. Bytes and Bytearray Methods #1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 7.2. Bytes and Bytearray Methods #2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 7.3. Bytes and Bytearray Methods #3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 7.4. File Object Attributes and Methods #1 . . . . . . . . . . . . . . . . . . . . . . . 325 7.5. File Object Attributes and Methods #2 . . . . . . . . . . . . . . . . . . . . . . . 326 8.1. Dynamic Programming and Introspection Functions . . . . . . . . . . 349 8.2. Attribute Access Special Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 8.3. The Numbers Module’s Abstract Base Classes . . . . . . . . . . . . . . . . 381 8.4. The Collections Module’s Main Abstract Base Classes . . . . . . . . . 383 12.1. DB-API 2.0 Connection Object Methods . . . . . . . . . . . . . . . . . . . . . . 481 12.2. DB-API 2.0 Cursor Object Attributes and Methods . . . . . . . . . . . 482 13.1. Character Class Shorthands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 xv

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.