Entendendo o if __name__ == “__main__” em Python: Guia Completo

Se você está começando a programar em Python, provavelmente já viu a famosa linha if __name__ == “__main__”: em muitos códigos. Mas, afinal, o que isso significa? Para que serve? E por que tantos programadores recomendam seu uso?

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para fazer o download do(s) arquivo(s) utilizados na aula, preencha com o seu e-mail:

Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.

Entendendo o if __name__ == "__main__"

Você já deve ter se deparado com essa estrutura em algum código ou durante seus estudos de Python, não é mesmo?

Neste artigo, vamos explicar de forma simples e prática o que é o if __name__ == "__main__" em Python, como ele funciona e por que é tão importante para escrever códigos organizados, reutilizáveis e profissionais.

O que significa if __name__ == "__main__"?

Em Python, o if __name__ == "__main__" é uma estrutura condicional que permite que um trecho de código seja executado apenas quando o arquivo for executado diretamente, e não quando for importado como módulo em outro arquivo.

Isso acontece porque o Python cria automaticamente uma variável especial chamada __name__ para cada arquivo (módulo). Essa variável:

  • Recebe o valor "__main__" quando o arquivo é o programa principal sendo executado.
  • Recebe o nome do arquivo (sem o .py) quando ele é importado em outro programa. Por exemplo, se você importar arquivo.py em outro arquivo, __name__ será 'arquivo'.

Ou seja, a condição:

Python
if __name__ == "__main__":

serve para verificar se o arquivo está sendo executado diretamente ou importado. Caso ele esteja sendo executado diretamente, rodará o código dentro da estrutura, caso contrário não.

Por que isso importa para seu código?

Imagine que você escreveu diversas funções úteis e quer testá-las, mas não quer que esses testes rodem automaticamente quando outro programa importar o seu código.

O if __name__ == "__main__": serve justamente para isso: garantir que certos trechos só sejam executados quando o arquivo for rodado diretamente, evitando efeitos colaterais indesejados.

Essa estrutura é essencial para criar códigos limpos, reutilizáveis e fáceis de manter.

Exemplo prático: entendendo __name__

Vamos ver um exemplo prático para deixar esse conceito ainda mais claro. Crie um arquivo chamado exemplo.py com o seguinte código:

Python
print(f"O valor de __name__ é: {__name__}")

if __name__ == "__main__":
    print("Rodando diretamente!")

Ao executar esse código diretamente, a saída será:

Como funciona a variável __name__

Mas se você importar esse arquivo em outro script, desta forma:

Python
import exemplo

A saída será apenas o nome do arquivo sem o .py, nesse caso, exemplo:

Variável __name__ em Python importada

Perceba que a mensagem “Rodando diretamente!” não aparece, porque o bloco dentro do if não é executado quando o arquivo é importado. Além disso, a variável __name__ passa a ter o valor exemplo, e não mais __main__ como tinha antes.

Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Começar agoraSeta para a direita
Fundo PythonTelas Python
Luz Python

Quando usar o if __name__ == "__main__"?

Sempre que quiser que determinado código só seja executado ao rodar o arquivo diretamente, como:

  • Entrada de dados pelo usuário.
  • Testes simples ou exemplos de uso.
  • Execução da função principal do programa

Essa prática evita que trechos de código rodem de forma indesejada ao importar funções e classes.

Organizando o código com uma função main()

Para deixar o código mais limpo e organizado, é comum criar uma função chamada main(), que contenha o código principal, e chamá-la dentro do if __name__ == "__main__".

Veja um exemplo:

Python
def main():
    print("Executando o programa principal!")

if __name__ == "__main__":
    main()
Exemplo de execução da estrutura if __name__ == "__main__" em Python

Isso facilita a manutenção e a reutilização do código, além de deixar claro o ponto de entrada do programa.

Exemplo completo: Cotações de Moedas no Python

Vamos usar como exemplo o código da aula como obter cotações de moedas no Python. Você pode baixá-lo no início desta publicação.

Nesse projeto, temos um arquivo chamado pegar_cotacao.py que contém a função de consulta e um teste simples.

Vamos analisar o código dessa aplicação:

Python
import requests

def pegar_cotacao_atual(moeda_origem, moeda_destino):
    with open("codigos_moedas.txt", "r") as arquivo:
        codigos_moedas = arquivo.read().split("\n")
    if moeda_origem not in codigos_moedas:
        print("Moeda de Origem não encontrada")
    if moeda_destino not in codigos_moedas:
        print("Moeda de Destino não encontrada")
    link = f"https://economia.awesomeapi.com.br/last/{moeda_origem}-{moeda_destino}"
    requisicao = requests.get(link)
    if requisicao:
        cotacao = requisicao.json()[moeda_origem + moeda_destino]["bid"]
        return cotacao
    else:
        print("Combinação não existente na API")
        return ""

if __name__ == "__main__":
    print(pegar_cotacao_atual("EUR", "BRL"))

Aqui, o if __name__ == "__main__" protege o teste simples. Assim, ao importar pegar_cotacao_atual em outro arquivo, esse teste não será executado automaticamente.

O que acontece se não usarmos if __name__ == "__main__"?

Se você tirar essa estrutura, qualquer código fora de funções ou classes será executado imediatamente na importação.

Por exemplo, imagine que você remova o print de dentro do if e importe o arquivo pegar_cotacao dentro de main.py:

Python
from pegar_cotacao import pegar_cotacao_atual

with open("precos.txt", "r") as arquivo:
    lista_precos = arquivo.read().split("\n")

for linha in lista_precos:
    mercadoria, valor, moeda = linha.split(",")
    cotacao = pegar_cotacao_atual(moeda, "BRL")
    print(f"{mercadoria} tá custando R${float(cotacao) * float(valor):,.2f} hoje")

Ao executar o main.py, você verá que o print que estava no arquivo pegar_cotacao.py será executado sem querer, atrapalhando o fluxo do seu programa.

Exemplo de execução de código sem a estrutura if __name__ == "__main__" em Python

Como o if __name__ == "__main__" resolve isso?

Essa estrutura garante que:

  • O código de teste ou execução só rode quando o arquivo for executado diretamente.
  • Ao importar o módulo, apenas funções e classes fiquem disponíveis, sem executar código adicional.
  • Você consiga separar claramente o que é reutilizável do que é específico para testes ou execução direta.

Ou seja, mesmo que você tenha várias linhas de código dentro dessa estrutura, elas só serão executadas quando o arquivo for executado diretamente.

Resumo para fixar –  if __name__ == "__main__":

  • __name__ é uma variável que o Python cria automaticamente para cada arquivo.
  • Quando você executa um arquivo diretamente, __name__ recebe o valor "__main__".
  • Quando você importa um arquivo, __name__ recebe o nome do arquivo de origem.

Portanto, o bloco if __name__ == "__main__": só executa seu conteúdo quando o arquivo é rodado diretamente.

Isso ajuda a evitar que códigos de teste ou saídas indesejadas apareçam quando você só quer usar as funções daquele arquivo importado.

Conclusão

O if __name__ == "__main__" é uma ferramenta essencial para quem quer escrever códigos Python claros, organizados e reutilizáveis.

Agora que você sabe como funciona, pode usar esse recurso para criar programas profissionais, evitar bugs por execuções inesperadas e manter seus projetos bem estruturados.

Experimente aplicá-lo nos seus próprios scripts! Teste rodando diretamente e importando, para ver o comportamento na prática.Dica final: sempre que criar um módulo que também pode ser executado como script, use if __name__ == "__main__" para proteger a execução direta.

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes de Python

Posts mais recentes da Hashtag Treinamentos