Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import functools
- import collections
- import json
- def cache(number):
- keydef = collections.OrderedDict()
- def cashed(func):
- @functools.wraps(func)
- def wrapper(*args, **kwargs):
- nonlocal keydef
- if(number == 0):
- return func(*args, **kwargs)
- else:
- key = (args, frozenset(kwargs.items()))
- if(key in keydef.keys()):
- return keydef[key]
- else:
- if(len(keydef) == number):
- keydef.popitem(last=False)
- keydef[key] = func(*args, **kwargs)
- return keydef[key]
- return wrapper
- return cashed
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement