def dynamicfunction(func): class DynamicFunction(object): def __init__(self, func): self.func=func self._cache={} def __call__(self, *args): print args result=self.func(args) return result return DynamicFunction(func) @dynamicfunction def test(lst): pass test(1,2,3)