def myMem(f):
    cache = {}
    def dummyF(x):
        print (cache)
        if x not in cache:
            print ('Running function')
            cache[x] = f(x)
        else:
            print ('Getting result from cache')
        return cache[x]
    return dummyF

@myMem
def myf(a):
    return a**2
print(myf(5))
print(myf(4))
print(myf(5))
print(myf(6))
print(myf(4))


