Utilizar um "cache de função" significa armazenar os resultados das chamadas de uma função, evitando reprocessamentos demorados para os mesmos argumentos.
A ideia é armazenar os argumentos (parâmetros) recebidos pela função e o resultado do processamento retornado pela função.
Assim,
quando a função recebe novamente os mesmos argumentos, em vez de
executar seu processamento para encontrar o resultado, apenas retorna o
resultado previamente armazenado.
Vamos a um exemplo, para melhorar o entendimento.
Digamos que temos uma função que calcula a multiplicação de um número inteiro pelo seu sucessor:
def vezes_proximo(numero):
print('número =', numero)
proximo = numero + 1
print('próximo =', proximo)
resultado = numero * proximo
print('resultado =', resultado)
return resultado
Ao executarmos essa função pela primeira vez, imprimindo seu retorno:
print(vezes_proximo(2))
Obteremos as seguintes informações:
número = 2
próximo = 3
resultado = 6
6
E sempre que executarmos novamente exatamente o mesmo comando, obteremos o mesmo resultado, como esperado!
print(vezes_proximo(2))
número = 2
próximo = 3
resultado = 6
6
Porém, como evitar esse reprocessamento quando não desejado?
É justamente para isso que utilizamos um cache de função.