Mercurial > memoize-slides
changeset 98:aa4ace1fb479
created
| author | 127.0.0.1 |
|---|---|
| date | Fri, 06 Dec 2013 23:41:03 +0100 |
| parents | d3b1da9d293f |
| children | 71c013a28bc2 |
| files | hash4.py |
| diffstat | 1 files changed, 23 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hash4.py Fri Dec 06 23:41:03 2013 +0100 @@ -0,0 +1,23 @@ +import functools + +def memoize(func): + cache = {} + separator = object() + @functools.wraps(func) + def wrapped(*args, **kwargs): + key = args + if kwargs: + key += (separator,) + tuple(sorted(kwargs.iteritems())) + try: + result = cache[key] + except KeyError: + result = cache[key] = func(*args, **kwargs) + return result + return wrapped + +@memoize +def show(what): + print what + +show(what="something") +show(what="something") \ No newline at end of file
