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.
O que você vai ver?
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.pyem outro arquivo,__name__será'arquivo'.
Ou seja, a condição:
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:
print(f"O valor de __name__ é: {__name__}")
if __name__ == "__main__":
print("Rodando diretamente!")Ao executar esse código diretamente, a saída será:

Mas se você importar esse arquivo em outro script, desta forma:
import exemploA saída será apenas o nome do arquivo sem o .py, nesse caso, exemplo:

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.
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:
def main():
print("Executando o programa principal!")
if __name__ == "__main__":
main()
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:
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:
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.

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!
Posts mais recentes de Python
- Curso Básico de Python: Saia do Zero em 10 Aulas GrátisAprenda com o curso básico de Python gratuito da Hashtag: 10 aulas práticas, exercícios e projetos reais para sair do zero em programação.
- Agentes RAG com Python: como criar um assistente de IAAprenda a criar Agentes RAG com Python do zero: LangChain, FAISS e OpenAI para montar um assistente de IA que responde com base nos seus documentos.
- 25 Tipos de Gráficos em Python: Guia Completo com CódigoAprenda a criar os principais tipos de gráficos em Python com Plotly: barras, pizza, mapas e mais, com código pronto para copiar e usar.
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








