Artigo original: https://www.freecodecamp.org/news/whats-in-a-python-s-name-506262fe61e8/
Introdução sobre a variável _ _name_ _ e seu uso em Python
Você provavelmente já viu a variável __name__
ao examinar um código em Python. Abaixo, vemos um trecho de código de exemplo de como ela pode aparecer:
if __name__ == '__main__': main()
Neste artigo, quero mostrar para você como você pode usar essa variável para criar módulos em Python.
Por que a variável _ _name_ _ é usada?
A variável __name__
(duas sublinhas antes e duas depois) é uma variável especial em Python. Ela obtém seu valor, dependendo de como executamos o script que a contém.
Às vezes, você escreve um script com funções que também podem ser úteis para outros scripts. Em Python, você pode importar esse script como um módulo em outro script.
Graças a essa variável especial, você pode decidir se quer executar o script ou se quer importar as funções definidas no script.
Que valores a variável __name__ poder conter?
Ao executar seu script, a variável __name__
é igual a __main__
. Ao importar o script que a contém, ela terá o nome do script.
Vamos ver de perto esses dois casos de uso e descrever o processo com duas ilustrações.
Cenário 1 - Executar o script
Vamos supor que escrevemos o script nameScript.py
conforme vemos abaixo:
def myFunction(): print 'The value of __name__ is ' + __name__
def main(): myFunction()
if __name__ == '__main__': main()
Se executarmos nameScript.py, seguimos o processo abaixo.

Antes de todo o resto do código ser executado, a variável __name__
é definida como __main__. Depois disso, as instruções def de main
e myFunction
são executadas. Como a condição é avaliada como verdadeira, a função principal (main, em inglês) é chamada. Ela, por sua vez, chama myFunction, que imprime o valor de __main__
.
Cenário 2 - Importação do script em outro script
Se quiser reutilizar myFunction em outro script, por exemplo, em importingScript.py
, podemos importar nameScript.py
como um módulo.
O código em importingScript.py
pode ser o seguinte:
import nameScript as ns
ns.myFunction()
Temos, então, dois escopos: um de importingScript
e o segundo escopo, de nameScript
. Na ilustração, você verá como isso é diferente do primeiro caso de uso.

Em importingScript.py, a variável __name__
é definida como __main__. Ao importar nameScript, o Python começa a procurar por um arquivo, adicionando .py
ao nome do módulo. Em seguida, executa o código contido no arquivo importado.
Nesse momento, contudo, ele está definido como nameScript. Novamente, as instruções def para main e myFunction são executadas. Agora, no entanto, a condição é avaliada como falsa e main não é chamada.
Em importingScript.py, chamamos myFunction, que dá como resultado nameScript. NameScript é conhecido da função myFunction quando aquela função é definida.
Se você quiser imprimir __name__
em importingScript, ele retornará __main__
. A razão para isso é o fato de que o Python usa o valor conhecido no escopo de importingScript.
Conclusão
Neste breve artigo, expliquei como você pode usar a variável __name__
para escrever módulos. Você também pode executar esses módulos sozinhos. Isso pode ser feito fazendo uso de como os valores dessas variáveis mudam, dependendo de onde elas ocorrem.