Funkcja cache

0

Witam, mam zagwozdkę.

Zadanie jest następujące:
" Create caching function, which will run some computation and return cached value."

Generalnie od wersji Python 3.5 chyba powstał dedykowany dekorator to obsłużenia czegoś podobnego:
https://docs.python.org/3/library/functools.html (lru)

Chciałbym poznać Wasze pomysły na wykonanie tego zadania, ale bez pomocy tego wzorca, raczej tak napisane "z łapy"

0

Cos takiego

_results = [None for _ in range(MAX_INDEX)]
def result(i):
    if (_results[i] == None):
        _results[i] = calc_result(i)

    return _results[i]

I opakowalbym to w lambde jakos zeby to faktycznie byla funkcja ale trzymala kontekst w domknieciu

Edit: jak argumentem nie jest jakis positive integer to mozna zmienic na slownik np zeby dzialalo

2

Zwyczajowo używa się słownika:

cache = {}  
def cached_fun(n):
	if n not in cache.keys():
		cache[n] = heavy_computation(n)
	return cache[n]


def heavy_computation(n):
	# ....
2

Z takimi rozwiązaniami nie dostalibyście się do dobrej firmy nawet na cieciówkę.

0

Może koledze @Mózg chodziło o użycie dekoratora w celu innej organizacji kodu? Ale to i tak sprowadza się do zapamiętania gdzieś obliczonego wyniku ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1