Chamar função aninhada em Python
Eu tenho um método que eu dividi em funções aninhadas menores para dividir a base de código:
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
Existe uma maneira de executar uma das funções aninhadas por si só. por exemplo:
foo.do_this(x,y)
EDITAR:
Eu estou tentando configurar o cache em um servidor web que eu construí usando pyramid_breaker
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)
Este é o meu entendimento pode não ser preciso:
Agora, o motivo pelo qual eu tenho isso é que o namespace usado pelo decorador para criar a chave do cache é gerado a partir da função e dos argumentos. Você não pode, portanto, apenas colocar o decorador em getThis, pois a variável request é única e o cache é inútil. Então eu criei a função interna que tem argumentos repetíveis (search_term).
No entanto, para invalidar o cache (ou seja, atualizar), a função de invalidação requer escopo para saber da função 'getData', portanto, também precisa ser aninhado. Portanto, eu preciso chamar a função aninhada. Vocês, pessoas maravilhosas, deixaram claro que isso não é possível, então alguém pode explicar como eu poderia fazer isso com uma estrutura diferente?