2
respostas

VARIAVEIS

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 ??

2 respostas

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!!!