stouputils.decorators.simple_cache module#
- simple_cache(
- func: Callable[..., T],
- *,
- method: Literal['str', 'pickle'] = 'str',
- simple_cache(
- func: None = None,
- *,
- method: Literal['str', 'pickle'] = 'str',
Decorator that caches the result of a function based on its arguments.
The str method is often faster than the pickle method (by a little) but not as accurate with complex objects.
- Parameters:
func (Callable[..., T] | None) – Function to cache
method (Literal["str", "pickle"]) – The method to use for caching.
Examples
>>> @simple_cache ... def test1(a: int, b: int) -> int: ... return a + b
>>> @simple_cache(method="str") ... def test2(a: int, b: int) -> int: ... return a + b >>> test2(1, 2) 3 >>> test2(1, 2) 3 >>> test2(3, 4) 7
>>> @simple_cache ... def factorial(n: int) -> int: ... return n * factorial(n - 1) if n else 1 >>> factorial(10) # no previously cached result, makes 11 recursive calls 3628800 >>> factorial(5) # no new calls, just returns the cached result 120 >>> factorial(12) # two new recursive calls, factorial(10) is cached 479001600