Memoize Expensive Functions
Cache function results by arguments.
Memoize Expensive Functions is a free Flask Academy lesson on CoddyKit — lesson 3 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Flask Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Beyond Whole Views
Sometimes only one slow helper is the problem, not the whole page. Memoization caches a function result keyed by its arguments.
The memoize Decorator
You wrap a function with @cache.memoize(). Same arguments return the stored result instead of recomputing it. 💡
@cache.memoize()
def heavy(n):
return slow_calc(n)Keyed by Arguments
Memoize builds the key from the arguments. heavy(2) and heavy(5) are cached separately, each remembering its own answer.
cached vs memoize
Use cached for views keyed by URL, and memoize for plain functions keyed by their inputs. They solve different layers.
Set a memoize Timeout
Just like views, you give memoize a timeout so results expire. After it passes, the next call recomputes and re-stores.
@cache.memoize(timeout=120)
def rates():
...Perfect for Pure Functions
Memoize shines on pure functions: same input always gives the same output, with no side effects to lose.
Avoid Caching Side Effects
Do not memoize a function that sends email or writes a row. On a cache hit the body is skipped, so the effect never runs.
Methods Need Care
For instance methods, the key includes self. Two objects cache separately, which is usually exactly what you want.
Drop One Memoized Result
You can evict a single entry with delete_memoized, passing the function and the exact arguments to clear.
cache.delete_memoized(rates)Clear by Argument
Pass arguments to delete_memoized to drop just that variant, leaving every other cached result untouched.
cache.delete_memoized(heavy, 5)Measure Before Memoizing
Only memoize what is actually slow. Profile first, because caching cheap work adds key overhead with little real gain.
Quick Check
You memoize a function that also logs each call to your database.
Recap: Memoization
You can memoize slow pure functions, key results by arguments, set timeouts, and evict with delete_memoized. 🎯
Frequently asked questions
Is the “Memoize Expensive Functions” lesson free?
Yes — the full text of “Memoize Expensive Functions” is free to read here on the web, and the Flask Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Flask Academy course, upgrade to CoddyKit PRO.
What will I learn in “Memoize Expensive Functions”?
Cache function results by arguments. You practise Flask Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start Flask Academy?
No prior experience is required. Flask Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 3 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Memoize Expensive Functions” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this Flask Academy lesson?
Yes. Every Flask Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Set Up Flask-Caching
- Cache a View with cached
- Memoize Expensive Functions
- Invalidate and Expire Cache Entries