English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste tutorial, vamos aprender a usar a propriedade __name__ do programa Python para executá-lo dinamicamente em diferentes contextos.
Alguns linguagens de programação têm uma função especial chamada main(), que é o ponto de execução do arquivo do programa. No entanto, o interpretador Python executa cada linha do arquivo de cima para baixo, sem função main() explícita.
O Python oferece outras convenções para definir o ponto de execução. Uma delas é usar a função main() do arquivo Python e a propriedade __name__.
__name__ é uma variável especial integrada do Python, que mostra o nome do módulo atual.
De acordo com a localização de execução do arquivo Python, ele tem diferentes valores. Vamos ver um exemplo.
Suponha que tenhamos um arquivo chamadohelloworld.pyO arquivo Python, cujo conteúdo é o seguinte:
print(__name__)
Se executarmos do linha de comandohelloworld.pySe não, ele será executado como um script Python. Podemos usar o seguinte comando para executar programas Python:
python helloworld.py
def foo(): str="__main__" print(str); if __name__=="__main__": foo()
Quando executamos o programa como script, o valor da variável __name__ é configurado como__main__. Portanto, a saída do seguinte programa será:
__main__
Também podemos executar arquivos Python como módulos. Para isso, devemos importar o arquivo para outro programa Python. Vamos ver um exemplo.
Supondo que tenhamos um arquivo chamadomain.pyArquivo Python. Ele tem o seguinte conteúdo:
import helloworld
A execução deste arquivo resultará na seguinte saída:
helloworld
Aqui, podemos ver que a importação de módulos também executa todo o código do arquivo do módulo.
Mas, podemos ver que, em vez de exibir __main__O programa exibirá o nome do módulo, ou seja helloworld.
Isso porque, quando um arquivo Python é executado como módulo, o nome do módulo é atribuído à variável __name__.
Agora que já entendemos como a variável __name__ atribui valores, podemos usar a cláusula de condição if para executar o mesmo arquivo Python de diferentes maneiras em contextos diferentes.
Vamos ver um exemplo.
Supondo que vamoshelloworld.pyO conteúdo do arquivo é alterado para o seguinte:
def main(): print("Hello World") if __name__=="__main__": main()
Agora, quando executamos o script pela linha de comando, a saída será:
Hello World
Mas, ao importá-lomain.pyQuando o arquivo é executado como módulo, não há saída alguma, pois a função main() não é chamada.
Aqui, criamos uma função main() personalizada no arquivo helloworld.py. Ela é executada apenas quando o programa é executado como um script independente e não como um módulo importado.
Este é o método padrão para definir explicitamente a função main() em Python. É um dos casos de uso mais populares da variável __name__ do arquivo Python.