Functional Programming in Python
David Mertz
Computers & Technology
Functional Programming in Python
Free
Description
Contents
Reviews

Python is not a functional programming language, but it is a multi-paradigm language that makes functional programming easy to perform, and easy to mix with other programming styles. In this paper, David Mertz, a director of Python Software Foundation, examines the functional aspects of the language and points out which options work well and which ones you should generally decline.



Mertz describes ways to avoid Python’s imperative-style flow control, the nuances of callable functions, how to work lazily with iterators, and the use of higher-order functions. He also lists several third-party Python libraries useful for functional programming.



Topics include:


  • Using encapsulation and other means to describe "what" a data collection consists of, rather than "how" to construct a data collection

  • Creating callables with named functions, lambdas, closures, methods of classes, and multiple dispatch

  • Using Python’s iterator protocol to accomplish the same effect as a lazy data structure


  • Creating higher-order functions that take functions as arguments and/or produce a function as a result

Language
English
ISBN
978-1-491-92856-1
Copyright
Table of Contents
Preface
What Is Functional Programming?
Beyond the Standard Library
Resources
A Stylistic Note
Chapter 1. (Avoiding) Flow Control
Encapsulation
Comprehensions
Generators
Dicts and Sets
Recursion
Eliminating Loops
Eliminating Recursion
Chapter 2. Callables
Named Functions and Lambdas
Closures and Callable Instances
Methods of Classes
Accessors and Operators
Static Methods of Instances
Generator Functions
Multiple Dispatch
Many Branches
Delegating to the Object
Pattern Matching
Predicate-Based Dispatch
Chapter 3. Lazy Evaluation
The Iterator Protocol
Module: itertools
Chaining Iterables
Chapter 4. Higher-Order Functions
Utility Higher-Order Functions
The operator Module
The functools Module
Decorators
The book hasn't received reviews yet.