Of course - there are many versions of this kind of decorator. None are canonical. Some support keyword arguments which makes them slower for our purposes. Python 3.2 implements [functools.lru_cache](http://docs.python.org/3.4/library/functools.html#functools.lru_cache). Most do not have limits, which allows for memory leaks.

Here are some examples:
https://wiki.python.org/moin/PythonDecoratorLibrary#Memoize
http://code.activestate.com/recipes/578231-probably-the-fastest-memoization-decorator-in-the-/
https://coderwall.com/p/qnmxkw
http://www.quora.com/Is-there-a-decorator-that-does-memoization-built-in-to-Python