No Python posso mudar a variável dinamicamente, isso pode me gerar um problema se o nome da variável por descuido for gerado duplamente uma tipo STR e outra tipo INT. Tem como de uma vez definida o tipo, impedir sua alteração ??
No Python posso mudar a variável dinamicamente, isso pode me gerar um problema se o nome da variável por descuido for gerado duplamente uma tipo STR e outra tipo INT. Tem como de uma vez definida o tipo, impedir sua alteração ??
Poderia exemplificar sua duvida ?
OI Hamilton, tudo bem ?
Ótimo questionamento. Impedir não há como, mas irei te apresentar um recurso bem poderoso em relação a isto.
O Python é muito conhecido por esta flexibilidade imensa em relação a tipagem, mas realmente, isto pode levar a alguma confusão e para isto, a partir da versão 3.6 da linguagem, surgiu um recurso chamando annotations, então você consegue dizer qual o tipo esperado daquela variável. Por exemplo:
ano: int = 2020
Neste caso, definimos visualmente que esperamos um tipo int para a variável ano. Porém, ainda será possível re-declará-la como str, porque o python ainda não possui nenhum recurso buit in que faça esta checagem, por exemplo:
ano: int = 2020
ano = "2020"
Observe que não ocorrerá nenhum erro, pois, neste caso, utilizamos as annotations apenas para mostrar que queremos um tipo inteiro, aumentando assim, a legibilidade. Agora quem for ler nosso código saberá que esperávamos que a variável ano fosse do tipo inteira.
Caso quiséssemos checar o tipo em tempo de execução utilizando a sintaxe mostrada acima, podemos utilizar o pacote mypy e compilarmos a partir dele, daí sim a verificação em tempo de execução seria feita.
Para baixar o pacote mypy, basta digitar:
pip install mypy
E após isto, execute o exemplo acima através do comando:
mypy nomedoarquivo.py
No Pycharm, para que ele mostre que há algo de errado com os tipos, você pode ir em:
file -> settings -> editor -> inspections -> type checker
Daí, marque do lado direito, em severity como error e não warning. Segue abaixo a foto:
Daí, no código ele mostrará algo similar a imagem deste link:
Mas novamente, caso queira que a verificação seja feita em tempo de execução é necessário utilizar o mypy.
Se você quiser saber mais sobre este assunto, recomendo a leitura deste artigo
Qualquer dúvida estou a disposição. Espero ter te ajudado. Bons estudos!!!