In article <[EMAIL PROTECTED]>, Steven D'Aprano <[EMAIL PROTECTED]> wrote:
> I was playing around with simple memoization and came up with something > like this: > > _cache = {} > def func(x): > global _cache There's no need to declare _cache as global, since you're not assigning to it. So this global isn't all that pesky after all... > if _cache.has_key(x): > return _cache[x] > else: > result = x+1 # or a time consuming calculation... > _cache[x] = result > return result > > when it hit me if I could somehow bind the cache to the function, I could > get rid of that pesky global variable. [ ... ] > What do folks think? Is there a better way? I actually prefer such a global variable to the default arg trick. The idiom I generally use is: _cache = {} def func(x): result = _cache.get(x) if result is None: result = x + 1 # or a time consuming calculation... _cache[x] = result return result Just -- http://mail.python.org/mailman/listinfo/python-list