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?

questionAnswers(6)

yourAnswerToTheQuestion