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

Subscribe
Notify of
guest

0 Comentários
Inline Feedbacks
View all comments