Functional Python Programming

(Wang) #1

The Functools Module


Both will provide us summary values for each group. The resulting group statistics
look as follows:


1 5.34 0.93


2 7.72 0.63


3 8.56 0.89


4 5.5 0.7


The variance can be used as part of a X^2 test to determine if the null hypothesis holds
for this data. The null hypothesis asserts that there's nothing to see; the variance
in the data is essentially random. We can also compare the data between the four
groups to see if the various means are consistent with the null hypothesis or there is
some statistically significant variation.


Summary


In this chapter, we've looked at a number of functions in the functools module.
This library module provides a number of functions that help us create sophisticated
functions and classes.


We've looked at the @lru_cache function as a way to boost certain types of
applications with frequent re-calculations of the same values. This decorator is of
tremendous value for certain kinds of functions that take the integer or the string
argument values. It can reduce processing by simply implementing memoization.


We looked at the @total_ordering function as a decorator to help us build
objects that support rich ordering comparisons. This is at the fringe of functional
programming, but is very helpful when creating new kinds of numbers.


The partial() function creates a new function with the partial application of
argument values. As an alternative, we can build a lambda with similar features.
The use case for this is ambiguous.


We also looked at the reduce() function as a higher-order function. This generalizes
reductions like the sum() function. We'll use this function in several examples in
the later chapters. This fits logically with the filter() and map() functions as an
important higher-order function.


In the next chapters, we'll look at how we can build higher-order functions
using decorators. These higher-order functions can lead to slightly simpler and
clearer syntax. We can use decorators to define an isolated aspect that we need to
incorporate into a number of other functions or classes.

Free download pdf