2.1 Definindo o tipo
Às vezes, em um determinado ponto do código, não sabemos exatamente quais dados estão armazenados na variável. Para isso, no Python existe a função type(), que é usada para determinar o tipo do objeto.
É uma função embutida que retorna o tipo do objeto especificado, o que pode ser útil para depuração, validação de dados ou durante a implementação de lógica, dependendo dos tipos de dados.
Como a função type() funciona
Quando você chama type(x), Python retorna um objeto especial type, que representa o tipo da variável x. Por exemplo:
x = 1
print(type(x)) # Vai exibir: <class 'int'>
x = "olá"
print(type(x)) # Vai exibir: <class 'str'>
x = [1, 2, 3]
print(type(x)) # Vai exibir: <class 'list'>
Note que a palavra class será exibida na tela. Isso porque até mesmo os tipos int, str, list e outros também são classes, só que embutidas — você não precisa declará-los, eles vêm junto com o Python.
Aplicação Prática
A função type() é muitas vezes utilizada em cenários onde é necessário distinguir ações com base no tipo de dado.
- Diferentes ações podem ser executadas dependendo do tipo da variável.
- Em funções e métodos, para assegurar a correção dos tipos dos argumentos.
Se você quer se certificar de que uma variável contém um número, escreva um código parecido com este:
arg = 123
if type(arg) == int:
print(arg + 10) # Vai exibir: 133
Um exemplo mais prático, onde verificamos o tipo do objeto que está armazenado na variável:
arg = "123"
if type(arg) == int:
print(arg + 10) # Isso não será executado, pois arg é uma string
elif type(arg) == str:
print(arg + " mundo") # Vai exibir: 123 mundo
else:
print("Tipo desconhecido")
2.2 Definindo explicitamente o tipo
Em Python, a definição explícita do tipo de um objeto é feita usando funções de conversão de tipo, como int(), float(), str(), tuple() e outras. Essas funções permitem definir um tipo específico e converter dados de um tipo para outro, o que é útil para processamento de entrada do usuário, execução de operações matemáticas ou manipulação de strings e coleções de dados.
Exemplos de funções de conversão de tipo
int(): Converte dados em um número inteiro. Já nos deparamos várias vezes com esta função e sabemos que, se passarmos uma string com um número, int() irá convertê-la para o número inteiro correspondente.
num = int("123") # num será o número inteiro 123
float(): Outra função familiar. Converte dados em um número de ponto flutuante.
num = float("123.45") # num será 123.45
str(): Converte qualquer objeto Python em uma representação em string.
s = str(10.5) # s será '10.5'
tuple(): Converte uma sequência em uma tupla.
t = tuple([1, 2, 3]) # t será (1, 2, 3)
list(): Converte um objeto iterável (por exemplo, uma string ou uma tupla) em uma lista. Um objeto iterável é um objeto que pode ser percorrido sequencialmente, como strings, listas ou tuplas.
l = list("abc") # l será ['a', 'b', 'c']
dict(): Cria um dicionário a partir de uma sequência de pares chave-valor.
d = dict([(1, 'a'), (2, 'b')]) # d será {1: 'a', 2: 'b'}
Sobre dicionários e tuplas, vamos falar um pouquinho mais tarde, mas acho que deu pra pegar a ideia geral: se você precisar explicitamente definir algum tipo, pode sempre usar as funções acima mencionadas.
2.3 Conversão de tipos
Em Python, a conversão explícita (ou casting) de tipos permite que os programadores controlem e alterem o tipo de dados das variáveis. Isso pode ser útil para garantir a compatibilidade dos dados em diferentes operações ou para corrigir tipos de dados obtidos a partir de entradas do usuário ou durante leituras de arquivos. Basicamente, conversão de tipos e casting significam a mesma coisa — o processo de alterar o tipo de dados de um objeto para outro tipo.
Já estamos um pouco familiarizados com a conversão explícita de tipos. Ela é feita em Python através de funções embutidas, como int(), float(), str(), tuple(), list(), dict(), set() e outras.
Para reforçar, vamos dar mais alguns exemplos:
| Função | Descrição | Exemplo de entrada | Exemplo de saída |
|---|---|---|---|
int() |
Conversão para número inteiro | int("10") | 10 |
float() |
Conversão para número de ponto flutuante | float("20.5") | 20.5 |
str() |
Conversão para string | str(15) | "15" |
tuple() |
Conversão para tupla | tuple([1, 2, 3]) | (1, 2, 3) |
list() |
Conversão para lista | list("abc") | ['a', 'b', 'c'] |
dict() |
Criação de dicionário a partir de pares chave-valor | dict([(1, 'one'), (2, 'two')]) | {1: 'one', 2: 'two'} |
set() |
Criação de conjunto a partir de lista | set([1, 1, 2, 2, 3, 3]) | {1, 2, 3} |
Exemplos de uso
A conversão explícita de tipos é utilizada em muitos cenários, incluindo:
- Processamento de entrada do usuário: Garantindo que os dados inseridos correspondam ao tipo de dados esperado.
- Interoperabilidade de dados: Quando dados de diferentes fontes ou APIs precisam ser combinados ou comparados.
- Tratamento de erros: Prevenção de erros de tempo de execução convertendo dados para o tipo apropriado antes de realizar operações.
Melhores práticas e advertências
A conversão explícita de tipos deve ser usada conscientemente para evitar perda de dados (por exemplo, ao converter float para int) ou erros de conversão (por exemplo, tentativa de converter uma string não numérica em um número).
Também é importante lembrar que algumas conversões podem não ser óbvias e levar a resultados inesperados, o que requer uma verificação cuidadosa dos dados. Por exemplo, converter int para bool e vice-versa pode ter efeitos inesperados :)
GO TO FULL VERSION