Usage for lru cache in functools

user308827 picture user308827 · Apr 18, 2016 · Viewed 13.4k times · Source

I want to use lru_cache in my code, however, I get this error:

NameError: name 'lru_cache' is not defined

I do have an import functools in my code but that does not help

Example code is here:

https://docs.python.org/3/library/functools.html

@lru_cache(maxsize=None)
def fib(n):
    if n < 2:
        return n
    return fib(n-1) + fib(n-2)

Answer

Rob Kennedy picture Rob Kennedy · Apr 18, 2016

If you really just wrote import functools, then that's not enough. You need to either import the lru_cache symbol with from functools import lru_cache, or you need to qualify the name when you attempt to use it, like @functools.lru_cache.

There's nothing special about the functools module in this respect. All modules work this way. You've probably noticed when you've imported other modules and used other functions.