Book description
Expert Insight for Modern Python (3.6+) Development from the Author of Python Essential Reference
The richness of modern Python challenges developers at all levels. How can programmers who are new to Python know where to begin without being overwhelmed? How can experienced Python developers know they're coding in a manner that is clear and effective? How does one make the jump from learning about individual features to thinking in Python at a deeper level? Dave Beazley's new Python Distilled addresses these and many other real-world issues.
Focusing on Python 3.6 and higher, this concise handbook focuses on the essential core of the language, with updated code examples to illuminate how Python works and how to structure programs that can be more easily explained, tested, and debugged. Throughout, Beazley reflects all he's learned teaching Python to scientists, engineers, and developers, and pushing the envelope of what makes Python tick.
Rather than trying to cover every possible feature and quirk of a 30-year-old language, this pragmatic guide provides a concise narrative related to fundamental programming topics such as data abstraction, control flow, program structure, functions, objects, and modules--topics that form the foundation for Python projects of any size.
Explore Python's core, from variables to packages
Solve data manipulation and analysis problems more effectively
Structure programs with an eye towards clarity and reliability
Control objects and master the "protocols" that define their behavior
Master functions and functional programming idioms
Discover the surprising power offered by generators
Understand classes from both high-level and technical perspectives
Plan for project growth by understanding modules and packages
Learn techniques and abstractions for proper I/O handling
Dicts!
Table of contents
- Cover Page
- About This eBook
- Halftitle Page
- Title Page
- Copyright Page
- Contents
- Preface
-
1. Python Basics
- 1.1 Running Python
- 1.2 Python Programs
- 1.3 Primitives, Variables, and Expressions
- 1.4 Arithmetic Operators
- 1.5 Conditionals and Control Flow
- 1.6 Text Strings
- 1.7 File Input and Output
- 1.8 Lists
- 1.9 Tuples
- 1.10 Sets
- 1.11 Dictionaries
- 1.12 Iteration and Looping
- 1.13 Functions
- 1.14 Exceptions
- 1.15 Program Termination
- 1.16 Objects and Classes
- 1.17 Modules
- 1.18 Script Writing
- 1.19 Packages
- 1.20 Structuring an Application
- 1.21 Managing Third-Party Packages
- 1.22 Python: It Fits Your Brain
-
2. Operators, Expressions, and Data Manipulation
- 2.1 Literals
- 2.2 Expressions and Locations
- 2.3 Standard Operators
- 2.4 In-Place Assignment
- 2.5 Object Comparison
- 2.6 Ordered Comparison Operators
- 2.7 Boolean Expressions and Truth Values
- 2.8 Conditional Expressions
- 2.9 Operations Involving Iterables
- 2.10 Operations on Sequences
- 2.11 Operations on Mutable Sequences
- 2.12 Operations on Sets
- 2.13 Operations on Mappings
- 2.14 List, Set, and Dictionary Comprehensions
- 2.15 Generator Expressions
- 2.16 The Attribute (.) Operator
- 2.17 The Function Call () Operator
- 2.18 Order of Evaluation
- 2.19 Final Words: The Secret Life of Data
- 3. Program Structure and Control Flow
-
4. Objects, Types, and Protocols
- 4.1 Essential Concepts
- 4.2 Object Identity and Type
- 4.3 Reference Counting and Garbage Collection
- 4.4 References and Copies
- 4.5 Object Representation and Printing
- 4.6 First-Class Objects
- 4.7 Using None for Optional or Missing Data
- 4.8 Object Protocols and Data Abstraction
- 4.9 Object Protocol
- 4.10 Number Protocol
- 4.11 Comparison Protocol
- 4.12 Conversion Protocols
- 4.13 Container Protocol
- 4.14 Iteration Protocol
- 4.15 Attribute Protocol
- 4.16 Function Protocol
- 4.17 Context Manager Protocol
- 4.18 Final Words: On Being Pythonic
-
5. Functions
- 5.1 Function Definitions
- 5.2 Default Arguments
- 5.3 Variadic Arguments
- 5.4 Keyword Arguments
- 5.5 Variadic Keyword Arguments
- 5.6 Functions Accepting All Inputs
- 5.7 Positional-Only Arguments
- 5.8 Names, Documentation Strings, and Type Hints
- 5.9 Function Application and Parameter Passing
- 5.10 Return Values
- 5.11 Error Handling
- 5.12 Scoping Rules
- 5.13 Recursion
- 5.14 The lambda Expression
- 5.15 Higher-Order Functions
- 5.16 Argument Passing in Callback Functions
- 5.17 Returning Results from Callbacks
- 5.18 Decorators
- 5.19 Map, Filter, and Reduce
- 5.20 Function Introspection, Attributes, and Signatures
- 5.21 Environment Inspection
- 5.22 Dynamic Code Execution and Creation
- 5.23 Asynchronous Functions and await
- 5.24 Final Words: Thoughts on Functions and Composition
-
6. Generators
- 6.1 Generators and yield
- 6.2 Restartable Generators
- 6.3 Generator Delegation
- 6.4 Using Generators in Practice
- 6.5 Enhanced Generators and yield Expressions
- 6.6 Applications of Enhanced Generators
- 6.7 Generators and the Bridge to Awaiting
- 6.8 Final Words: A Brief History of Generators and Looking Forward
-
7. Classes and Object-Oriented Programming
- 7.1 Objects
- 7.2 The class Statement
- 7.3 Instances
- 7.4 Attribute Access
- 7.5 Scoping Rules
- 7.6 Operator Overloading and Protocols
- 7.7 Inheritance
- 7.8 Avoiding Inheritance via Composition
- 7.9 Avoiding Inheritance via Functions
- 7.10 Dynamic Binding and Duck Typing
- 7.11 The Danger of Inheriting from Built-in Types
- 7.12 Class Variables and Methods
- 7.13 Static Methods
- 7.14 A Word about Design Patterns
- 7.15 Data Encapsulation and Private Attributes
- 7.16 Type Hinting
- 7.17 Properties
- 7.18 Types, Interfaces, and Abstract Base Classes
- 7.19 Multiple Inheritance, Interfaces, and Mixins
- 7.20 Type-Based Dispatch
- 7.21 Class Decorators
- 7.22 Supervised Inheritance
- 7.23 The Object Life Cycle and Memory Management
- 7.24 Weak References
- 7.25 Internal Object Representation and Attribute Binding
- 7.26 Proxies, Wrappers, and Delegation
- 7.27 Reducing Memory Use with __slots__
- 7.28 Descriptors
- 7.29 Class Definition Process
- 7.30 Dynamic Class Creation
- 7.31 Metaclasses
- 7.32 Built-in Objects for Instances and Classes
- 7.33 Final Words: Keep It Simple
-
8. Modules and Packages
- 8.1 Modules and the import Statement
- 8.2 Module Caching
- 8.3 Importing Selected Names from a Module
- 8.4 Circular Imports
- 8.5 Module Reloading and Unloading
- 8.6 Module Compilation
- 8.7 The Module Search Path
- 8.8 Execution as the Main Program
- 8.9 Packages
- 8.10 Imports Within a Package
- 8.11 Running a Package Submodule as a Script
- 8.12 Controlling the Package Namespace
- 8.13 Controlling Package Exports
- 8.14 Package Data
- 8.15 Module Objects
- 8.16 Deploying Python Packages
- 8.17 The Penultimate Word: Start with a Package
- 8.18 The Final Word: Keep It Simple
-
9. Input and Output
- 9.1 Data Representation
- 9.2 Text Encoding and Decoding
- 9.3 Text and Byte Formatting
- 9.4 Reading Command-Line Options
- 9.5 Environment Variables
- 9.6 Files and File Objects
- 9.7 I/O Abstraction Layers
- 9.8 Standard Input, Output, and Error
- 9.9 Directories
- 9.10 The print() function
- 9.11 Generating Output
- 9.12 Consuming Input
- 9.13 Object Serialization
- 9.14 Blocking Operations and Concurrency
- 9.15 Standard Library Modules
- 9.15.25 threading Module
- 9.16 Final Words
- 10. Built-in Functions and Standard Library
- Index
- Code Snippets
Product information
- Title: Python Distilled
- Author(s):
- Release date: September 2021
- Publisher(s): Addison-Wesley Professional
- ISBN: 9780134173399
You might also like
book
Using Asyncio in Python
If you’re among the Python developers put off by asyncio’s complexity, it’s time to take another …
book
Hypermodern Python Tooling
Keeping up with the Python ecosystem can be daunting. Its developer tooling doesn't provide the out-of-the-box …
book
Robust Python
Does it seem like your Python projects are getting bigger and bigger? Are you feeling the …
book
Python Testing with pytest
Test applications, packages, and libraries large and small with pytest, Python's most powerful testing framework. pytest …