associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Revisão 3e 2006-01-14 15:50:59

Excluir mensagem

CacheDeFuncoes

Receita: Cache de Funções

Exemplo prático de uma função em Python que retorna uma outra função. Isto é possível porque funções em Python são elementos de primeira classe. Esta receita é uma função que recebe como parâmetro qualquer função (matemática) e retorna a mesma função do argumento com um cache associado para lembrar dos resultados calculados, o Cache é simplesmente um dicionário de argumentos da função com o valor calculado correspondende.

Código

   1 def cache_f(f):
   2     """Retorna uma funcao igual a 'f' mas com um cache associado.
   3     
   4     Exemplo:
   5     >>> f = cache_f(math.sin)
   6     >>> f.cache
   7     {}
   8     >>> f(0)
   9     0.0
  10     >>> f(1)
  11     0.8414709848078965
  12     >>> f.cache
  13     {(1,): 0.8414709848078965, (0,): 0.0}
  14     """
  15     def g(*args):
  16         if args in g.cache:
  17             return g.cache[args]
  18         else:
  19             g.cache[args] = f(*args)
  20             return g.cache[args]
  21     g.cache = {}
  22     return g

Volta para CookBook.


RudaMoura