Wywołaj zagnieżdżoną funkcję w Pythonie
Mam metodę, którą podzieliłem na mniejsze zagnieżdżone funkcje, aby rozbić bazę kodu:
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
Czy istnieje sposób na samodzielne uruchomienie jednej z zagnieżdżonych funkcji. na przykład:
foo.do_this(x,y)
EDYTOWAĆ:
Próbuję skonfigurować buforowanie na serwerze WWW, który zbudowałem przy użyciu piramidy
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)
To moje zrozumienie może nie być dokładne:
Teraz powodem jest to, że przestrzeń nazw używana przez dekoratora do tworzenia klucza pamięci podręcznej jest generowana z funkcji i argumentów. Dlatego nie można po prostu umieścić dekoratora w getThis, ponieważ zmienna żądania jest unikalna, a pamięć podręczna jest bezużyteczna. Dlatego stworzyłem wewnętrzną funkcję, która ma powtarzalne argumenty (search_term).
Jednak, aby unieważnić pamięć podręczną (tj. Odświeżyć), funkcja unieważnienia wymaga zasięgu, aby poznać funkcję „getData”, dlatego też musi być zagnieżdżona. Dlatego muszę wywołać funkcję zagnieżdżoną. Wy, cudowni ludzie, wyjaśniliście, że nie jest to możliwe, więc czy ktoś jest w stanie wyjaśnić, jak mogę to zrobić z inną strukturą?