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
