AttributeError: el objeto 'NoneType' no tiene ningún atributo 'append'

Tengo un problema extraño con Python pasar una lista como parámetro a una función. Aquí está el código:

def foobar(depth, top, bottom, n=len(listTop)):
    print dir(top)
    print top.append("hi")
    if depth > 0:
        exit()
    foobar(depth+1, top.append(listTop[i]), bottom.append(listBottom[i]))

top = bottom = []
foobar(0, top, bottom)

Dice "AttributeError: el objeto 'NoneType' no tiene ningún atributo 'append'", porque top es None en foobar aunque dir (top) imprime un atributo completo y una lista de métodos de una lista de tipos. ¿Así que qué hay de malo? Solo quería pasar dos listas como parámetros a esta función recursiva.

Respuestas a la pregunta(2)

Su respuesta a la pregunta