2

Tentando Explicar: ___name___ == "__main__"

#Python
Gian Silva
Gian Silva


É bem possível que, em algum momento, já tenhamos visto uma linha de código parecida com essa em algum lugar. Mas o que ela significa? Permita-me tentar explicar isso. Mas antes, uma explicação sobre os módulos.


Um módulo é qualquer arquivo Python com definições e instruções a serem executadas para agirem como se fossem um programa. Por regra, todos os módulos podem ser importados para serem usados por outros arquivos através do comando import <nome do arquivo>.


Primeiro observe o código do arquivo ex1.py:


Se eu executar esse código no VSCode, ou na IDE, ou no terminal de comando, será mostrado na tela o resultado da função somatorio: 5. Agora observe o arquivo ex2.py, que está na mesma pasta de ex1:



A primeira coisa que vai acontecer ao executar ex2 será o arquivo importar e executar o módulo ex1. Mas, ao invés de exibir o resultado 5, como no exemplo anterior, um resultado diferente será retornado:



Por que isso acontece?


__name__ é uma das variáveis internas do sistema que são definidas ao executar qualquer arquivo Python. Quando executamos um arquivo diretamente na linguagem, definimos que tal arquivo será o programa principal. Por isso que, nesse caso, __name__ recebe o valor __main__. Porém, quando importamos tal arquivo para ser utilizado por outro programa principal, __name__ receberá como valor o nome do arquivo.


Desse jeito, podemos faazer com que nossos códigos tenham dois comportamentos diferentes: um quando o arquivo onde eles estão forem executados diretamente e outro quando forem importados e executados por outro arquivo.


Espero ter ajudado.

3
33

Comentários (3)

0
D

Daniel Bicalho

22/03/2021 17:36

Sensacional a explicação

0
⚡Eros Lima

⚡Eros Lima

24/02/2021 21:24

Muito interessante Gian, parabéns.


Me adicionem tbm estudo Python

https://www.linkedin.com/in/%E2%9A%A1%EF%B8%8Feros-m-lima-57a405198/

1
Acaccio Guimarães

Acaccio Guimarães

24/02/2021 20:47

Explicação fácil de entender, muito legal.


Vlw Gian.



None

Brasil