Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Tenho que necessariamente colocar a função de inicialização no bottom do código?

Olá, o meu questionamento pode ser um tanto quanto desnecessário, mas estou curioso, para mim faria mais sentido esteticamente colocar a função "Jogar()" e a condição que atesta a veracidade do" name == main" no começo do código, pois é uma função de inicialização, seria isso uma ação totalmente desnecessária ou até mesmo um erro?

Caso não for uma ação desnecessária nem erronia, penso que o código prossegueria desse jeito:

def jogar():
if (__name__ == __main__):
    jogar()

    #Resto do código identado
2 respostas
solução!

Olá Parcelo, tudo bem? Sua pergunta é muito interessante e válida. Na verdade, não há uma regra que determine que a função de inicialização deve estar no final do código. É possível colocá-la no começo ou em qualquer outra parte do código.

No entanto, é importante lembrar que a função de inicialização é responsável por iniciar o programa e, portanto, é uma boa prática deixá-la no começo do código para que fique mais fácil de identificar e entender o que o programa faz logo de cara.

No seu exemplo, colocar a função "jogar()" e a condição "name == main" no começo do código não seria errado, mas pode dificultar a leitura e compreensão do programa por outras pessoas.

Por isso, é recomendado manter a função de inicialização no começo do código, mas isso não é uma regra absoluta.

Espero ter ajudado e bons estudos!

Grande Parcelo. Tudo tranquilo?

Eu imagino que você já deve ter usado em algum dos seus códigos o import. Creio que na implementação do seu jogo, você deve ter feito algo do tipo:

import random

Quando você escreve no seu código dessa forma, você está querendo que o seu código pegue o código que está escrito em algum arquivo (módulo) entre os vários arquivos (módulos) instalados com o Python e está fazendo com que esse código que já foi escrito antes, rode no seu código ao invés de ter que escrevê-lo tudo de novo, nesse caso o random. Bom, o que isso significa? Significa que quando você importou o módulo random, ele deixou de ser um script "independente" e passou a depender do seu código para que ele possa ser executado, ou seja, o seu código passou a ser o principal (main) arquivo de execução do programa para que o módulo random possa ser executado também. Logo, podemos deduzir que a variável main, no Python, refere-se ao código que é "chamado", seja pelo terminal ou por um IDE, e que pode importar ou não outros módulos. A variável name refere-se ao nome dado aos arquivos (módulos) que já vem instalados nativamente no Python ou são criados pelo usuário (Isso mesmo! o script que você cria também é considerado um módulo em Python). E ao colocar o trecho da condicional:

if __name__ == "__main__":

Você está dizendo ao Python o seguinte: - "Python, verifica se esse arquivo é o principal, ou seja, o script que contém o código responsável por funcionar o programa e, caso seja, faz esse comando...". O que nesse caso você pede para que seja chamada a função jogar( ). Espero que tenha entendido até aqui. Quanto ao fato do porquê esse trecho de código não vem no início do script se deve ao fato de que, por lógica, assim como o Python lê um script linha após linha começando da parte superior esquerda até o último caractere que esteja localizado na parte inferior mais a direita (a forma como a grande maioria das pessoas leem qualquer escrita), é necessário que primeiro se crie a função com todos os seus comandos e depois ela é invocada. Ou seja, chamar por algo que ainda não foi declarado, obviamente, vai dar erro.

Em resumo, o uso é opcional e é mais usado quando se tem mais de um arquivo (módulo) contendo código em Python e que se quer deixar explicito qual é o arquivo principal e qual é o "dependente". Espero que tenha ajudado a entender e compreender.