August 2018
Intermediate to advanced
248 pages
5h 51m
English
Python decorators are generic and very powerful. You can find many examples of how they can be used at the decorator library of python.org (j.mp/pydeclib). In this section, we will see how we can implement a memoization decorator (j.mp/memoi). All recursive functions can benefit from memoization, so let's try a function number_sum() that returns the sum of the first n numbers. Note that this function is already available in the math module as fsum(), but let's pretend it is not.
First, let's look at the naive implementation (the number_sum_naive.py file):
def number_sum(n): '''Returns the sum of the first n numbers''' assert(n >= 0), 'n must be >= 0' if n == 0: return 0 else: return n + number_sum(n-1) if __name__ == '__main__': ...