Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

A chamada da primeira função precisa ser exatamente na última linha?

#arquivo app.py
def cadastrar(nomes):
    print 'Digite: o nome:'
    nome = raw_input()
    nomes.append(nome)

def menu():
    nomes = []
    escolha = ''
    while(escolha != '0'):    
        print 'Digite: 1 para cadastrar, 0 para terminar'
        escolha = raw_input()
        if(escolha == '1'):
            cadastrar(nomes)

menu() #estamos chamando menu!
1 resposta
solução!

Acredito que não, é só uma forma de organização.