2016-04-18 22 views
-1

ich in meinem Code verwenden lru_cache will, jedoch bekomme ich diesen Fehler:Verwendung für lru Cache in functools

NameError: name 'lru_cache' is not defined 

habe ich einen Import functools in meinem Code aber das hilft nicht

Beispiel-Code ist hier:

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) 

Antwort

3

Wenn Sie wirklich nur import functools schreiben, dann ist das nicht genug. Sie müssen entweder das lru_cache Symbol mit from functools import lru_cache importieren, oder Sie müssen den Namen qualifizieren, wenn Sie versuchen, es zu verwenden, wie @functools.lru_cache.

In dieser Hinsicht gibt es nichts Besonderes an dem Modul functools. Alle Module funktionieren auf diese Weise. Sie haben wahrscheinlich bemerkt, wenn Sie andere Module importiert und andere Funktionen verwendet haben.

0

Sie müssen lru_cache importieren, bevor es mit:

from functools import lru_cache 

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

Oder alternativ dazu mit vollem Namen beziehen, wenn functools importieren:

import functools 

@functools.lru_cache(maxsize=None) 
def fib(n): 
0

Der Import Linie in der Frage nicht enthalten, aber es sollte sein:

@functools.lru_cache(maxsize=None) 
:

from functools import lru_cache 

Alternativ könnte die Funktion Dekorateur geändert werden