Entendendo Importações Relativas no Python 3
Quando você começando a programar em Python, é comum encontrar o bloco de código parecido com o abaixo:
if __name__ == "__main__":
print("Olá, Mundo!")Essa linha pode parecer enigmática à primeira vista, mas é uma expressão idiomática comum em Python que serve a um propósito específico. Vamos detalhar o que ela faz e por que é importante incluí-la em seus scripts Python.
__name__ em PythonEm Python, a variável especial __name__ é usada para determinar se um arquivo Python está sendo executado como o programa principal, ou se está sendo importado como um módulo em outro programa.
Quando você executa um script Python diretamente, por exemplo, digitando:
python meuscript.pyNa linha de comando, a variável __name__ é definida como "__main__". No entanto, se o mesmo script for importado em outro script, a variável __name__ será definida como o nome do arquivo do script (sem a extensão .py).
if __name__ == "__main__":A verificação if __name__ == "__main__": é usada para garantir que certos códigos sejam executados apenas quando o script for executado diretamente. Isso é particularmente útil quando você deseja fornecer tanto a funcionalidade de um módulo reutilizável quanto de um script autônomo.
Aqui estão alguns cenários onde não incluir essa verificação pode causar problemas:
pickle: Quando você desserializa um objeto de um arquivo pickle, o Python pode precisar importar o módulo onde esse objeto foi definido. Por exemplo, se o objeto salvo no formato pickle for um DataFrame do pandas, o Python terá de importar a biblioteca pandas implicitamente. Sem a proteção if __name__ == "__main__":, você pode executar código inadvertidamente.Considere o seguinte script, foo.py:
# foo.py
print("Isso sempre será impresso.")
def main():
print("Isso só será impresso se foo.py for executado diretamente.")
if __name__ == "__main__":
main()Quando você executa foo.py diretamente, ele imprime ambas as mensagens. No entanto, se você importar foo.py em outro script, apenas a primeira mensagem é impressa, e a função main() não é chamada.
Esse padrão é útil por diversas razões:
Em resumo, a expressão idiomática if __name__ == "__main__": é uma maneira de garantir que certos códigos sejam executados apenas quando um arquivo Python é executado como o programa principal e não quando é importado como um módulo. É uma boa prática usar essa verificação para evitar comportamentos inesperados e para fornecer pontos de entrada claros no seu código. Seja você um escritor de módulos, scripts ou ambos, esse padrão é uma parte essencial da escrita de código Python limpo e de fácil manutenção.
Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:
Comentários
30xp