Olá, Raimundo!
A sua percepção está correta. Python é, na verdade, tanto interpretado quanto compilado, e essa característica realmente traz uma grande flexibilidade para a linguagem.
Python é geralmente categorizado como uma linguagem interpretada porque o código Python padrão é executado por um interpretador linha por linha. No entanto, antes dessa execução, o interpretador Python na verdade converte o código fonte em uma forma intermediária conhecida como bytecode, o que é um processo de compilação. Então, nesse sentido, Python também é compilado.
No entanto, é importante notar que o bytecode gerado não é código de máquina, mas sim um formato intermediário que é mais fácil para o interpretador Python processar. O bytecode é independente de plataforma e pode ser executado em qualquer sistema que tenha um interpretador Python adequado.
Quanto à sua observação sobre a possibilidade de gerar um arquivo executável após a conclusão do desenvolvimento, você está correto. Existem ferramentas como PyInstaller, py2exe, entre outras, que podem empacotar o seu código Python junto com um interpretador em um único arquivo executável. Isso significa que o programa pode ser executado em uma máquina que não tenha um interpretador Python instalado.
No entanto, é importante lembrar que essas ferramentas não estão realmente compilando seu código Python em código de máquina, como um compilador C ou C++ faria. Em vez disso, elas estão apenas empacotando seu código Python e um interpretador Python em um único arquivo.
Espero ter ajudado e bons estudos!