… e suas particularidades através da consulta de uma série de publicações pela Internet (muitas delas, disponíveis em grupos do LinkedIn), me deparei com uma dica que na minha opinião, me parece mais uma gambiarra do que uma boa prática: criar uma função especial chamada main() para manter as instruções do arquivo main.py e assim, evocar as suas instruções somente se ele for carregado a partir do interpretador (e não por ter sido importado por outros arquivos)…
Quando importamos determinados scripts como módulos, o Python automaticamente executa todas as instruções contidas neles. Embora este seja o comportamento esperado, na prática ele poderá nos trazer alguns inconvenientes, caso o script em questão possua outras instruções além das classes, dos métodos e das funções que desejamos usar. Para evitar isto, faz-se necessário criar a função já mencionada, além de estabelecer uma condicional que faça a verificação da variável __name__ e conferir que ela tenha recebido o valor “__main__”.
def main():
"""
This is the main function of the program.
It contains the primary logic to be executed.
"""
print("Hello from the main function!")
# Add other function calls or program logic here
if __name__ == "__main__":
main()
Isto se dá, porque a variável em questão irá receber o valor desejado, somente se o código tiver sido inicializado diretamente pelo interpretador e assim, as suas instruções serão executadas como deveriam. Mas caso ele seja importado por outro script, o nome atribuído à esta variável será apenas “main” e por isto, não terá as suas instruções executadas. Além de evitar a execução de instruções indesejadas, esta prática também traz algumas vantagens interessantes.
Dentre as vantagens mencionadas (créditos para o Google Gemini e o ChatGPT), estão: a maior legibilidade de código (pois as instruções estão dentro de uma função principal), a melhor gestão das variáveis declaradas (que passam a ser tratadas como locais por estarem dentro de funções), a possibilidade de utilizar o código tanto para a execução da aplicação como a reutilização como módulo (para tirar proveito das suas funções), o maior controle do que será realmente executado (ou não) e a maior facilidade para manter e depurar o código.
Ok. Até aqui, tudo bem. E a partir do momento que eu for trabalhar em aplicações mais complexas, farei o seu uso (pois irei sempre seguir as melhores práticas já estabelecidas, ainda que não concorde com algumas delas). Mas, não seria bem mais prático, ter a execução automática desativada no Python para os scripts importados? Além disso, porquê eu iria manter funções reutilizáveis no arquivo principal da aplicação, se posso perfeitamente deixá-las separadas em módulos designados para isto e de quebra, manter o main.py mais simples ainda?
Embora já domine os fundamentos desta linguagem de programação, ainda estou em fase de aprendizado e por isto, certamente irei obter as respostas desejadas para as perguntas que eu mesmo estou fazendo. Além disso, estou mais preocupado em estabelecer as melhores práticas e metodologias, para que eu saiba exatamente o que fazer quando começar a lidar com projetos maiores e mais complexos. Por ora, vou curtindo esta fase e aos poucos, explorando este incrível ecosssistema que foi estabelecido em torno desta poderosa linguagem de programação.
Até porque “a pressa é inimiga da perfeição” (mas aliada da ansiedade)… &;-D