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

Executando uma função

não entendi . (1) para importar um modulo do pycharm, a gente escreve qual nome ? tipo import forca esse forca, aonde tem esse nome ?

(2) e não entendi o executar um modulo solitário : if (name == "main") executa

    o que é esse __name__ e esse __main__ 
4 respostas

Olá Arthur. (1) Voce vai importar em um arquivo principal para disponibilizar a escolha do jogo. Por exemplo o arquivo jogos.py representa o menu de um video game, e nesse menu podemos escolher entre a adivinhaçao ou a forca.

(2) Isso é uma condiçao para verificar se a variávei name esta guardando o valor exato do nome do arquivo que ela vai executar, no caso compara com o main, isso torna possível a execuçao diretamente do terminal.

Desde já agradeço muito pelo tempo, mas se nao for incomodo, ainda ficaram algumas duvidas.

entao o import forca é pq o nome do arquivo é o forca.py ?seria isso ?

(2) esse main, é padrão ?ou temos como ver esse nome ?

solução!

Opa eae Arthur, tudo certo?

Sobre o __name__:

Na documentação basicamente diz que o __name__ é o nome completo do módulo, usado pra unicamente identificar esse modulo no sistema de importações.

Aqui você pode ver que um módulo é um arquivo .py que pode conter classes, funções e variáveis globais.

Sobre o __main__:

De acordo com a documentação __main__ é o nome do escopo no qual o código de nível mais alto executa.

Mas o que isso significa?

Isso basicamente vai significar que __main__ é o nome do arquivo que você está rodando o código.

Sobre o if __name__ == "__main__":

Ou seja, quando você faz if __name__ == '__main__' você está perguntando "Será que o arquivo que eu estou executando (__main__) é o módulo que eu estou executando (__name__)?"

Se o módulo que eu estou executando é o arquivo que eu estou executando então eu estou executando meu módulo diretamente dentro dele sem importar ele pra lugar nenhum.

Quando eu importo meu módulo pra outro lugar o __name__ dele vai ser o nome do módulo + path necessario.

Por exemplo, se eu tenho um arquivo teste.py dentro da pasta testando e eu quero importar a classe PrimeiroTeste pra um arquivo (exemplo.py) na raiz do meu projeto eu vou ter que fazer from testando.teste import PrimeiroTeste.

Se no meu teste.py tem um if __name__ == '__main__' e eu estou executando dentro do exemplo.py vai dar falso pq o __main__ vai ser o exemplo.py mas o meu if está pegando o __name__ do teste.py que nesse caso seria testando.teste.

Agora se eu executar meu código dentro do teste.py meu if vai passar porque o __main__ vai ser o teste.py e meu __name__ vai ser teste.py já que o __name__ é o nome do módulo e como eu estou dentro dele eu não preciso passar o path dele sendo assim o path dele vai ser o próprio nome dele, que é igual ao __main__.

Sobre o Import de módulos:

O nome que usamos pra importar os módulos é o caminho para o arquivo que nós queremos importar.

Se ambos os arquivos estão na raiz do seu projeto vai ser apenas o nome do arquivo (sem .py).

Se o arquivo estiver em outra pasta vai ser o caminho desde a raiz do seu projeto até esse arquivo que você quer importar.

Se você só quiser importar uma unica coisa de dentro do arquivo você pode usar o from caminho.ate.o.arquivo import unica_coisa essa 'unica coisa' pode ser uma classe, uma função ou uma variavel.

Espero que tenha entendido tudo agora. Qualquer duvida só perguntar :)

entendi . vlw :)