Rufen Sie die verschachtelte Funktion in Python auf
Ich habe eine Methode, die ich in kleinere verschachtelte Funktionen aufgeteilt habe, um die Codebasis aufzuteilen:
def foo(x,y):
def do_this(x,y):
pass
def do_that(x,y):
pass
do_this(x,y)
do_that(x,y)
return
Gibt es eine Möglichkeit, eine der verschachtelten Funktionen selbst auszuführen. z.B:
foo.do_this(x,y)
BEARBEITEN:
Ich versuche, das Caching auf einem Webserver einzurichten, den ich mit pyramid_breaker erstellt habe
def getThis(request):
def invalidate_data(getData,'long_term',search_term):
region_invalidate(getData,'long_term',search_term)
@cached_region('long_term')
def getData(search_term):
return response
search_term = request.matchdict['searchterm']
return getData(search_term)
Dies ist meines Erachtens möglicherweise nicht korrekt:
Der Grund, warum ich das habe, ist, dass der Namespace, der vom Dekorateur zum Erstellen des Cache-Schlüssels verwendet wird, aus der Funktion und den Argumenten generiert wird. Sie können den Decorator daher nicht einfach auf getThis setzen, da die Anforderungsvariable eindeutig ist und der Cache unbrauchbar ist. Also habe ich die innere Funktion erstellt, die wiederholbare Argumente hat (search_term).
Um jedoch den Cache ungültig zu machen (dh zu aktualisieren), benötigt die Ungültigkeitsfunktion einen Bereich, in dem die Funktion 'getData' bekannt ist, und muss daher auch verschachtelt sein. Deshalb muss ich die verschachtelte Funktion aufrufen. Sie wundervolle Leute haben klar gemacht, dass es nicht möglich ist, also kann jemand erklären, wie ich es mit einer anderen Struktur machen könnte?