Não entendi porque precisamos chamar a função de novo, é para 'recomeçar' o código?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Não entendi porque precisamos chamar a função de novo, é para 'recomeçar' o código?
Bruno, é isso mesmo!
No código
while(escolha != '0'):
print 'Digite: 1 para cadastrar, 0 para terminar'
escolha = raw_input()
if(escolha == '1'):
cadastrar(nomes)
...
Enquanto o usuário digitar algum número diferente de 0 (zero), o laço (programa) continuará a ser executado.
Quando o usuário digitar 1 (um), a função cadastrar() será invocada novamente, para cadastrar um novo nome.
O chamamento da função menu() no fim do código é pelo mesmo motivo?
Quando você cria uma função com def, você não está chamando (ou invocando) essa função, está apenas definindo. Por isso, no final do código há a chamada à função que apresenta o menu ao usuário, que ocorre na linha que contém esse código:
menu()
Assim, o interpretador python vai varrer o arquivo desde o início, detectar as funções que foram criadas, mas não vai executar nenhuma, porque não solicitamos.
Daí, quando ele chegar à última linha, ele vai encontrar a chamada (ou invocação) à função menu() e o programa terá, então, início.
Boa alunos. A última resposta de Manoel é por onde eu iria na explicação.
Bruno vi que você fez o curso de lógica de programação, perfeito, mas eu regravei o curso e talvez ele te prepare ainda melhor para aprender outras linguagens. Confira depois o curso se assim desejar
https://www.alura.com.br/curso-online-logica-programacao-javascript-html
É muito bom ver meus alunos aqui no fórum! Abraço galera!
Vou dar uma olhada no curso professor. Obrigado a todos pela ajuda!