ebook img

Zero to Py : A Comprehensive Guide to Learning the Python Programming Language PDF

315 Pages·2023·2.564 MB·
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 Zero to Py : A Comprehensive Guide to Learning the Python Programming Language

Zero to Py A Comprehensive Guide to Learning the Python Programming Language Michael Green This book is for sale at http://leanpub.com/zero-to-py This version was published on 2023-02-20 This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and many iterations to get reader feedback, pivot until you have the right book and build traction once you do. © 2023 Michael Green Contents Zero to Py: A Comprehensive Guide to Learning the Python Programming Language . . . . . . . . . . . . . . . . . . . . . . . . 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Part I: A Whirlwind Tour . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Chapter 0: System Setup . . . . . . . . . . . . . . . . . . . . . . . . . 3 Installing Python . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Python Versions . . . . . . . . . . . . . . . . . . . . . . . 4 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 macOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 What’s in a PATH? . . . . . . . . . . . . . . . . . . . . . 6 Setting up your dev environment . . . . . . . . . . . . . . . 7 Running Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 A program that runs programs . . . . . . . . . . . . . 8 One interpreter, many modes . . . . . . . . . . . . . . 8 Chapter 1. Fundamental data types . . . . . . . . . . . . . . . . . . 11 But first, Variables . . . . . . . . . . . . . . . . . . . . . . . . . 11 Primitives and Containers . . . . . . . . . . . . . . . . . . . . 14 Mutability vs Immutability. . . . . . . . . . . . . . . . . . . . 15 Introduction to Python’s data types . . . . . . . . . . . . . . 15 Primitive Types . . . . . . . . . . . . . . . . . . . . . . . . 16 Booleans . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 CONTENTS Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Floats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Complex . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Container Types . . . . . . . . . . . . . . . . . . . . . . . 20 Tuples and Lists . . . . . . . . . . . . . . . . . . . . . . 20 Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . 23 Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Python Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 References to Objects . . . . . . . . . . . . . . . . . . . . 27 Chapter 2. Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Packing operators . . . . . . . . . . . . . . . . . . . . . . 31 Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Logical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 What is Truthy? . . . . . . . . . . . . . . . . . . . . . . . 36 Short-Circuits . . . . . . . . . . . . . . . . . . . . . . . . . 36 Logical Assignments . . . . . . . . . . . . . . . . . . . . 36 Membership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Bitwise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Identity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Chapter 3. Lexical Structure . . . . . . . . . . . . . . . . . . . . . . . 41 Line Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Explicit and Implicit Line Joining . . . . . . . . . . . . . . . 43 Indentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Chapter 4. Control Flow . . . . . . . . . . . . . . . . . . . . . . . . . 46 if, elif, and else . . . . . . . . . . . . . . . . . . . . . . . . . 46 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 CONTENTS continue. . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 What is an Iterable? . . . . . . . . . . . . . . . . . . . . . 50 for/else and break . . . . . . . . . . . . . . . . . . . . . . . 51 Exception Handling. . . . . . . . . . . . . . . . . . . . . . . . . 53 raise from . . . . . . . . . . . . . . . . . . . . . . . . . . 56 else and finally . . . . . . . . . . . . . . . . . . . . . 56 match . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 type checking . . . . . . . . . . . . . . . . . . . . . . . . . 60 guards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Or Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Chapter 5. Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Function Signatures. . . . . . . . . . . . . . . . . . . . . . . . . 66 Explicitly positional/key-value. . . . . . . . . . . . . . 69 Default Values. . . . . . . . . . . . . . . . . . . . . . . . . 69 Mutable Types as Default Values . . . . . . . . . . . 70 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Nested Scopes . . . . . . . . . . . . . . . . . . . . . . . . . 73 nonlocal and global . . . . . . . . . . . . . . . . . . . 74 Closures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Anonymous Functions . . . . . . . . . . . . . . . . . . . . . . . 77 Decorators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Chapter 6. Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 data types as classes. . . . . . . . . . . . . . . . . . . . . . . . . 84 __dunder__ methods . . . . . . . . . . . . . . . . . . . . . . . 85 The __init__ method . . . . . . . . . . . . . . . . . . . 85 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Class Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 A Functional Approach . . . . . . . . . . . . . . . . . . . . . . 88 @staticmethod . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 CONTENTS @classmethod . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Part II. A Deeper Dive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Chapter 7. Expressions, Comprehensions, and Generators . . 92 Generator Expressions . . . . . . . . . . . . . . . . . . . . . . . 92 Generator Functions . . . . . . . . . . . . . . . . . . . . . . . . 93 yield from . . . . . . . . . . . . . . . . . . . . . . . . . . 94 List Comprehensions . . . . . . . . . . . . . . . . . . . . . . . . 95 Dictionary Comprehensions . . . . . . . . . . . . . . . . . . . 96 Expressions and the Walrus Operator. . . . . . . . . . . . . 96 Chapter 8. Python’s Built-in Functions . . . . . . . . . . . . . . . 97 Type Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Mathematical Functions . . . . . . . . . . . . . . . . . . . . . . 104 all() and any() . . . . . . . . . . . . . . . . . . . . . . . . . . 106 dir() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 enumerate(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 eval() and exec() . . . . . . . . . . . . . . . . . . . . . . . . 108 map() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 filter() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 input() and print() . . . . . . . . . . . . . . . . . . . . . . 110 open() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 range() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 sorted() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 reversed() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 zip() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Chapter 9. The Python Data Model . . . . . . . . . . . . . . . . . . 115 Object Creation Using __new__ and __init__ . . . . . . 116 Singletons . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Rich Comparisons . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Operator Overloading . . . . . . . . . . . . . . . . . . . . . . . 120 String Representations . . . . . . . . . . . . . . . . . . . 123 CONTENTS Emulating Containers . . . . . . . . . . . . . . . . . . . . . . . 123 Emulating Functions . . . . . . . . . . . . . . . . . . . . . . . . 126 Using Slots. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Customizing Attribute Access . . . . . . . . . . . . . . . . . . 127 Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Lazy Evaluation . . . . . . . . . . . . . . . . . . . . . . . 131 Context Managers . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Chapter 10. Concepts in Object-Oriented Programming . . . . 139 Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Calling the Super Class using super() . . . . . . . . 141 Multiple Inheritance and Method Resolution Order 142 Encapsulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Polymorphism . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Chapter 11. Metaclasses . . . . . . . . . . . . . . . . . . . . . . . . . 146 Chapter 12. The Data Types, Revisited. . . . . . . . . . . . . . . . 149 Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Bits and Bytes . . . . . . . . . . . . . . . . . . . . . . . . . 151 Floats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Float Methods . . . . . . . . . . . . . . . . . . . . . . . . . 152 Hex Values . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Complex Numbers . . . . . . . . . . . . . . . . . . . . . . . . . 153 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Split and Join . . . . . . . . . . . . . . . . . . . . . . . . . 153 Search and Replace . . . . . . . . . . . . . . . . . . . . . 154 Paddings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Translating . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Prefixes and Suffixes . . . . . . . . . . . . . . . . . . . . 158 CONTENTS Boolean Checks . . . . . . . . . . . . . . . . . . . . . . . . 159 Case Methods . . . . . . . . . . . . . . . . . . . . . . . . . 160 Encodings . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Decoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Hex Values . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Counting and Indexing . . . . . . . . . . . . . . . . . . . 164 Copying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Mutations. . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Orderings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Iter Methods . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Getter/Setter Methods . . . . . . . . . . . . . . . . . . . 169 Mutations. . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Creating new Dictionaries . . . . . . . . . . . . . . . . 171 Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Mutations. . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Set Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Boolean Checks . . . . . . . . . . . . . . . . . . . . . . . . 176 Copying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Chapter 13. Type Hints . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Incorporating Type Hints . . . . . . . . . . . . . . . . . . . . . 178 Union types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Optional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 type|None . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Literal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 TypeAlias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 NewType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 CONTENTS TypeVar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Runtime type checking . . . . . . . . . . . . . . . . . . . 191 Generics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 TypedDict . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 Chapter 14. Modules, Packages, and Namespaces . . . . . . . . 196 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Module Attributes . . . . . . . . . . . . . . . . . . . . . . 199 if __name__ == "__main__": . . . . . . . . . . . . 200 Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Imports within packages . . . . . . . . . . . . . . . . . . 203 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Part III. The Python Standard Library . . . . . . . . . . . . . . . . . . 206 Chapter 15. Copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Chapter 16. Itertools . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 Chaining Iterables . . . . . . . . . . . . . . . . . . . . . . . . . . 209 Filtering Iterables . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Cycling Through Iterables . . . . . . . . . . . . . . . . . . . . 211 Creating Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 Slicing Iterables . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Zip Longest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Chapter 17. Functools . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Partials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Reduce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Caching. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Dispatching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Chapter 18. Enums, NamedTuples, and Dataclasses . . . . . . . 218 Enums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 NamedTuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 CONTENTS Dataclasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Chapter 19. Multithreading and Multiprocessing . . . . . . . . . 224 Multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Thread Locks . . . . . . . . . . . . . . . . . . . . . . . . . 227 Multiprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Process and Pool . . . . . . . . . . . . . . . . . . . . . . . 230 Process Locks . . . . . . . . . . . . . . . . . . . . . . . . . 232 Pipes and Queues . . . . . . . . . . . . . . . . . . . . . . 233 concurrent.futures . . . . . . . . . . . . . . . . . . . . . . 235 Chapter 20. Asyncio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 Coroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 Tasks and Task Groups . . . . . . . . . . . . . . . . . . . . . . 240 ExceptionGroup and Exception unpacking . . . . 241 Part VI. The Underbelly of the Snake . . . . . . . . . . . . . . . . . . . 244 Chapter 21. Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . 244 pdb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Other Debuggers . . . . . . . . . . . . . . . . . . . . . . . . . . 251 Chapter 22. Profiling. . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 cProfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 flameprof . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 snakeviz. . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 memory_profiler . . . . . . . . . . . . . . . . . . . . . . . . . 260 Chapter 23. C extensions . . . . . . . . . . . . . . . . . . . . . . . . . 261 Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 hello_world.c . . . . . . . . . . . . . . . . . . . . . . . 263 setup.py. . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Passing data in and out of Python . . . . . . . . . . . . . . . 270 Memory Management . . . . . . . . . . . . . . . . . . . 274 Parsing Arguments . . . . . . . . . . . . . . . . . . . . . . . . . 275 Parsing Tuple Arguments . . . . . . . . . . . . . . . . . 275

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.