David Seruyange wrote: > Hey everyone, > > I'm wondering how one caches things in python in a manner similar to > how a static variable or class member might in C#. I can only think > of an equivalent in something like a global variable, but is there > another? I'm not good enough yet to think in a manner "pythonic" but > I've an inkling that a generator may do this? This program (where I > want to cache a list of factorials once computed) is what prompted my > questions:
Well, if you're using a class then you can also use class members. For functions then using a global variable as a cache is fairly normal. There are various other approaches though - for example see the memoize decorator that caches function call results: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/496879 This one uses an inner function and has the cache in the outer scope - so that each memoized function has its own cache. Michael http://www.manning.com/foord > > f = [1] > > def fact(n): > if n == 1:return 1 > if(n > len(f)): > for i in range(len(f), n+1): > f.append(i * f[i -1]) > return f[n] > > print fact(4) #set it up > print fact(3) #pulled from cache > print fact(6) #grow it > > > ------------------------------------------------------------------------ > Boardwalk for $500? In 2007? Ha! > Play Monopoly Here and Now > <http://us.rd.yahoo.com/evt=48223/*http://get.games.yahoo.com/proddesc?gamekey=monopolyherenow> > > (it's updated for today's economy) at Yahoo! Games. > ------------------------------------------------------------------------ > > _______________________________________________ > Users mailing list > Users@lists.ironpython.com > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com > _______________________________________________ Users mailing list Users@lists.ironpython.com http://lists.ironpython.com/listinfo.cgi/users-ironpython.com