Oii, Vitor.
Quando você define uma função (usando def nome_da_funcao():), você tá apenas "ensinando" ao Python como fazer aquela tarefa. Você tá criando uma receita. No entanto, o Python não vai "cozinhar" essa receita a menos que você dê a ordem explicita para ele fazer isso.
Essa "ordem" é o que chamamos de invocação ou chamada da função.
No exemplo da aula, a função main() atua como o maestro da orquestra. Ela define quem toca, quando toca e em qual ordem.
Se você tiver o código da função exibir_nome_do_programa escrito no arquivo, mas remover a linha que chama essa função de dentro do main(), acontece exatamente o que você previu:
- O Python lê o arquivo.
- Ele aprende o que a função
exibir_nome_do_programa faz (ele carrega isso na memória). - Quando chega no
if __name__ == '__main__':, ele executa o main(). - Dentro do
main(), se a chamada não estiver lá, ele simplesmente ignora aquela função e passa para a próxima instrução.
O código da função continua existindo no arquivo, mas ele fica "adormecido", pois nunca foi ativado.
Esse pequeno exemplo pra ilustrar:
def funcao_que_ninguem_chama():
print("Eu estou aqui no código, mas não vou aparecer na tela.")
def funcao_que_sera_chamada():
print("Fui chamada pelo main!")
def main():
# Note que eu SÓ chamei a segunda função aqui
funcao_que_sera_chamada()
if __name__ == '__main__':
main()
Se você rodar esse código, a frase "Eu estou aqui no código..." nunca aparecerá no terminal, embora ela faça parte do arquivo.
Essa organização centralizada no main ajuda muito na manutenção. Se amanhã você não quiser mais que o programa exiba as opções, basta comentar ou apagar aquela linha única dentro do main, sem precisar apagar todo o bloco de código da função (que pode ser útil no futuro).
Espero ter ajudado.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!