@raphael_tillman
Here is an example of how you can write a Python decorator for caching:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import functools
def cache(func):
cached_results = {}
@functools.wraps(func)
def wrapper(*args, **kwargs):
key = (args, frozenset(kwargs.items()))
if key not in cached_results:
cached_results[key] = func(*args, **kwargs)
return cached_results[key]
return wrapper
|
You can then apply this decorator to any expensive function that you want to cache the results of. Here's an example of using the cache decorator:
1 2 3 4 5 6 7 8 |
@cache
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
print(fibonacci(10)) # This will cache the result of fibonacci(10)
|
This decorator will store the results of function calls in a dictionary and return the cached result if the same inputs are provided again. This can be useful for optimizing performance in situations where a function is called repeatedly with the same inputs.