Think in Python.pdf
文件大小: 948k
源码售价: 10 个金币 积分规则     积分充值
资源说明:Contents Preface vii 1 The way of the program 1 1.1 The Python programming language . . . . . . . . . . . . . . . . . . 1 1.2 What is a program? . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 What is debugging? . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4 Formal and natural languages . . . . . . . . . . . . . . . . . . . . . 5 1.5 The first program . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.6 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.7 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.8 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2 Variables, expressions and statements 11 2.1 Values and types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3 Variable names and keywords . . . . . . . . . . . . . . . . . . . . . 13 2.4 Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5 Operators and operands . . . . . . . . . . . . . . . . . . . . . . . . 14 2.6 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.7 Order of operations . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.8 String operations . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 xiv Contents 2.9 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.10 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.11 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.12 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3 Functions 21 3.1 Function calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2 Type conversion functions . . . . . . . . . . . . . . . . . . . . . . 22 3.3 Math functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.4 Composition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.5 Adding new functions . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.6 Definitions and uses . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.7 Flow of execution . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.8 Parameters and arguments . . . . . . . . . . . . . . . . . . . . . . 26 3.9 Variables and parameters are local . . . . . . . . . . . . . . . . . . 28 3.10 Stack diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.11 Fruitful functions and void functions . . . . . . . . . . . . . . . . . 29 3.12 Why functions? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.13 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.14 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.15 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4 Case study: interface design 35 4.1 TurtleWorld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.2 Simple repetition . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.3 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.4 Encapsulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.5 Generalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.6 Interface design . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Contents xv 4.7 Refactoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.8 A development plan . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.9 docstring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.10 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.11 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5 Conditionals and recursion 45 5.1 Modulus operator . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.2 Boolean expressions . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.3 Logical operators . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.4 Conditional execution . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.5 Alternative execution . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.6 Chained conditionals . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.7 Nested conditionals . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.8 Recursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.9 Stack diagrams for recursive functions . . . . . . . . . . . . . . . . 50 5.10 Infinite recursion . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.11 Keyboard input . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.12 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.13 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.14 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 6 Fruitful functions 57 6.1 Return values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 6.2 Incremental development . . . . . . . . . . . . . . . . . . . . . . . 58 6.3 Composition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.4 Boolean functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.5 More recursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 6.6 Leap of faith . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 xvi Contents 6.7 One more example . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.8 Checking types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.9 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6.10 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 6.11 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 7 Iteration 69 7.1 Multiple assignment . . . . . . . . . . . . . . . . . . . . . . . . . . 69 7.2 Updating variables . . . . . . . . . . . . . . . . . . . . . . . . . . 70 7.3 The while statement . . . . . . . . . . . . . . . . . . . . . . . . . 70 7.4 break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 7.5 Square roots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 7.6 Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 7.7 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 7.8 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 7.9 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 8 Strings 79 8.1 A string is a sequence . . . . . . . . . . . . . . . . . . . . . . . . . 79 8.2 len . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 8.3 Traversal with a for loop . . . . . . . . . . . . . . . . . . . . . . . 80 8.4 String slices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 8.5 Strings are immutable . . . . . . . . . . . . . . . . . . . . . . . . . 82 8.6 A find function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 8.7 Looping and counting . . . . . . . . . . . . . . . . . . . . . . . . . 83 8.8 string methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 8.9 The in operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 8.10 String comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 8.11 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 8.12 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 8.13 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Contents xvii 9 Case study: word play 91 9.1 Reading word lists . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 9.2 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 9.3 Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 9.4 Looping with indices . . . . . . . . . . . . . . . . . . . . . . . . . 94 9.5 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 9.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 9.7 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 10 Lists 99 10.1 A list is a sequence . . . . . . . . . . . . . . . . . . . . . . . . . . 99 10.2 Lists are mutable . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 10.3 Traversing a list . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 10.4 List operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 10.5 List slices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 10.6 List methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 10.7 Map, filter and reduce . . . . . . . . . . . . . . . . . . . . . . . . . 104 10.8 Deleting elements . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 10.9 Objects and values . . . . . . . . . . . . . . . . . . . . . . . . . . 106 10.10 Aliasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 10.11 List arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 10.12 Copying lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 10.13 Lists and strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 10.14 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 10.15 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 10.16 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 xviii Contents 11 Dictionaries 113 11.1 Dictionary as a set of counters . . . . . . . . . . . . . . . . . . . . 114 11.2 Looping and dictionaries . . . . . . . . . . . . . . . . . . . . . . . 116 11.3 Reverse lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 11.4 Dictionaries and lists . . . . . . . . . . . . . . . . . . . . . . . . . 118 11.5 Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 11.6 Long integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 11.7 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 11.8 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 11.9 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 12 Tuples 125 12.1 Tuples are immutable . . . . . . . . . . . . . . . . . . . . . . . . . 125 12.2 Tuple assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 12.3 Tuples as return values . . . . . . . . . . . . . . . . . . . . . . . . 127 12.4 Lists and tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 12.5 Dictionaries and tuples . . . . . . . . . . . . . . . . . . . . . . . . 129 12.6 Sorting tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 12.7 Sequences of sequences . . . . . . . . . . . . . . . . . . . . . . . . 131 12.8 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 12.9 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 13 Case study: data structure selection 133 13.1 DSU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 13.2 Word frequency analysis . . . . . . . . . . . . . . . . . . . . . . . 134 13.3 Random numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 13.4 Word histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 13.5 Most common words . . . . . . . . . . . . . . . . . . . . . . . . . 137 13.6 Optional arguments . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Contents xix 13.7 Dictionary subtraction . . . . . . . . . . . . . . . . . . . . . . . . . 138 13.8 Random words . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 13.9 Markov analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 13.10 Data structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 13.11 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 14 Files 143 14.1 Persistence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 14.2 Reading and writing . . . . . . . . . . . . . . . . . . . . . . . . . . 143 14.3 Format operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 14.4 Filenames and paths . . . . . . . . . . . . . . . . . . . . . . . . . . 145 14.5 Catching exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . 147 14.6 Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 14.7 Pickling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 14.8 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 15 Classes and objects 151 15.1 User-defined types . . . . . . . . . . . . . . . . . . . . . . . . . . 151 15.2 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 15.3 Rectangles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 15.4 Instances as return values . . . . . . . . . . . . . . . . . . . . . . . 154 15.5 Objects are mutable . . . . . . . . . . . . . . . . . . . . . . . . . . 155 15.6 Copying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 15.7 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 15.8 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 15.9 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 xx Contents 16 Classes and functions 159 16.1 Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 16.2 Pure functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 16.3 Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 16.4 Prototyping versus planning . . . . . . . . . . . . . . . . . . . . . 162 16.5 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 16.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 17 Classes and methods 165 17.1 Object-oriented features . . . . . . . . . . . . . . . . . . . . . . . . 165 17.2 print time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 17.3 Another example . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 17.4 A more complicated example . . . . . . . . . . . . . . . . . . . . . 168 17.5 The init method . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 17.6 The str method . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 17.7 Operator overloading . . . . . . . . . . . . . . . . . . . . . . . . . 170 17.8 Type-based dispatch . . . . . . . . . . . . . . . . . . . . . . . . . . 171 17.9 Polymorphism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 17.10 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 17.11 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 18 Inheritance 175 18.1 Card objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 18.2 Class attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 18.3 Comparing cards . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 18.4 Decks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 18.5 Printing the deck . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 18.6 Add, remove, shuffle and sort . . . . . . . . . . . . . . . . . . . . . 180 18.7 Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 18.8 Class diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 18.9 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 18.10 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Contents xxi 19 Case study: Tkinter 187 19.1 Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 19.2 Buttons and callbacks . . . . . . . . . . . . . . . . . . . . . . . . . 188 19.3 Canvas widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 19.4 Coordinate sequences . . . . . . . . . . . . . . . . . . . . . . . . . 190 19.5 More widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 19.6 Packing widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 19.7 Menus and Callables . . . . . . . . . . . . . . . . . . . . . . . . . 195 19.8 Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 19.9 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 A Debugging 201 A.1 Syntax errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 A.2 Runtime errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 A.3 Semantic errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。