Neste artigo veremos em detalhes o que if __name__ == “__main__”: faz, uma instrução que as vezes nos deparamos em bibliotecas, por exemplo.

o que if __name__ == __main__ faz capa

Fala programador(a), beleza? Bora aprender mais sobre Python!

Esta instrução é encontrada as vezes em bibliotecas/códigos de terceiros e parece um tanto misteriosa, o que será que ela faz?

Basicamente podemos entender que quando o nosso código de um arquivo não é importado em outro __name__ será __main__

Já quando se o nosso arquivo foo.py, por exemplo, é importado no arquivo bar.py

O valor de __name__ se torna bar.py, no arquivo foo.py

Em bar o __name__ ainda é __main__, pois é o arquivo ‘principal’

Veja os exemplos a seguir:

def imprimirAlgumaCoisa():
  print("Imprime apenas se __name__ for __main__, ou seja, foo não foi importado")

if(__name__ == "__main__"):
  imprimirAlgumaCoisa()
else:
  print("__name__ não é __main__, foo foi importado e o __name__ é: " + __name__)

Neste caso teremos a impressão de:

Imprime apenas se __name__ for __main__, ou seja, foo não foi importado

Pois __name__ é __main__, ele é o arquivo principal rodando

Agora vejamos o que acontece se importamos o foo.py neste arquivo bar.py:

import foo

print("O name em bar é: " + __name__)

Teremos a seguinte saída se rodarmos bar.py:

__name__ não é __main__, foo foi importado e o __name__ é: foo
O name em bar é: __main__

Isso pelo fato explicado anteriormente, o arquivo foo foi importado

Então o nome do __main__ é alterado também

E a validação if __name__ == “__main__” só é True, quando este arquivo não for importado em outros

Conclusão

Neste artigo vimos o que if __name__ == “__main__”: faz e como podemos utilizá-la

A ideia é que o o __name__ apenas é __main__ no seu arquivo, quando ele não é importado em outros

Se for importado, o __name__ dele será o nome do arquivo, quando for chamado por este outro arquivo em que ele foi importado

Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube

Inscrever-se
Notificar de
guest

0 Comentários
mais antigos
mais recentes Mais votado
Feedbacks embutidos
Ver todos os comentários