Oii, Vitor! tudo bem?
Excelente observação! Muito legal ver você buscando outras fontes e questionando a estrutura do código, isso é essencial para evoluir na programação.
O jeito que o instrutor Guilherme fez não está errado para o objetivo didático atual. Vou te explicar o porquê:
1. O que acontece no código da aula (recursividade)
Quando chamamos a função main() dentro de listar_restaurantes(), estamos criando uma espécie de ciclo. Se o usuário ficar navegando no menu centenas de vezes sem parar, o computador vai "empilhando" essas chamadas na memória até que, eventualmente, pode dar um erro chamado RecursionError (ou "estouro de pilha").
- Por que o professor fez assim? Pra quem está começando, é mais intuitivo pensar em "voltar para o início" chamando a função principal novamente do que gerenciar um loop infinito. Para o tamanho deste projeto, isso não causará problemas de performance.
2. A sugestão do ChatGPT (laço de repetição):
A estrutura com while True é a forma profissional de criar menus.
- Ela mantém o programa rodando em um ciclo "eterno" no mesmo lugar da memória, sem empilhar chamadas.
- Quando uma função termina, ela naturalmente devolve o controle para o
while no menu principal.
Você pode seguir a sugestão do ChatGPT sem medo! Mas não se preocupe se quiser manter o padrão do curso por enquanto; a ideia agora é focar na lógica de manipulação de listas e funções. Mais para frente, a complexidade da estrutura vai aumentando naturalmente.
Parabéns pela curiosidade!
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!