Advertisement
d_skat

Untitled

Apr 21st, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.72 KB | None | 0 0
  1. import functools
  2. import collections
  3. import json
  4.  
  5.  
  6. def cache(number):
  7.     keydef = collections.OrderedDict()
  8.  
  9.     def cashed(func):
  10.         @functools.wraps(func)
  11.         def wrapper(*args, **kwargs):
  12.             nonlocal keydef
  13.             if(number == 0):
  14.                 return func(*args, **kwargs)
  15.             else:
  16.                 key = (args, frozenset(kwargs.items()))
  17.                 if(key in keydef.keys()):
  18.                     return keydef[key]
  19.                 else:
  20.                     if(len(keydef) == number):
  21.                         keydef.popitem(last=False)
  22.                     keydef[key] = func(*args, **kwargs)
  23.                     return keydef[key]
  24.         return wrapper
  25.     return cashed
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement