Función anidada de llamada en Python

Tengo un método que he dividido en funciones anidadas más pequeñas para dividir el código base:

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

¿Hay una manera de ejecutar una de las funciones anidadas por sí mismo. p.ej:

foo.do_this(x,y)

EDITAR:

Estoy intentando configurar el almacenamiento en caché en un servidor web que he construido 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 es mi entendimiento puede no ser exacto:

Ahora, la razón por la que tengo esto es que el espacio de nombres utilizado por el decorador para crear la clave de caché se genera a partir de la función y los argumentos. Por lo tanto, no puede simplemente poner el decorador en getThis ya que la variable de solicitud es única y la memoria caché es inútil. Así que creé la función interna que tiene argumentos repetibles (search_term).

Sin embargo, para invalidar el caché (es decir, actualizar), la función de invalidación requiere que el alcance conozca la función 'getData', por lo que también debe estar anidado. Por lo tanto, necesito llamar a la función anidada. Ustedes, gente maravillosa, han dejado en claro que no es posible, ¿alguien puede explicar cómo podría hacerlo con una estructura diferente?

Respuestas a la pregunta(6)

Su respuesta a la pregunta