def stubborn_cache (func):
class aClass:
def __init__(self):
self.cache ={}
def __call__(self, arg):
try:
value = self.cache[arg]
except KeyError:
value = func(arg)
self.cache[arg] = value
return value
temp = aClass()
return temp
@stubborn_cache
def happy(num):
print ("I'm happy")
return num+1
print (happy(1))
print (happy(1))
ZGVmIHN0dWJib3JuX2NhY2hlIChmdW5jKToKICAgIGNsYXNzIGFDbGFzczoKICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgICAgIHNlbGYuY2FjaGUgPXt9CiAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGFyZyk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5jYWNoZVthcmddCiAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgIHZhbHVlID0gZnVuYyhhcmcpCiAgICAgICAgICAgICAgICBzZWxmLmNhY2hlW2FyZ10gPSB2YWx1ZQogICAgICAgICAgICByZXR1cm4gdmFsdWUKICAgIHRlbXAgPSBhQ2xhc3MoKQogICAgcmV0dXJuIHRlbXAKCkBzdHViYm9ybl9jYWNoZQpkZWYgaGFwcHkobnVtKToKICAgIHByaW50ICgiSSdtIGhhcHB5IikKICAgIHJldHVybiBudW0rMQoKcHJpbnQgKGhhcHB5KDEpKQpwcmludCAoaGFwcHkoMSkpCgogICAgICAgICAgICAKICAgICAgICAgICA=