Em Python, a conversão de tipos de dados é frequentemente necessária ao processar informações de fontes diverass ou formatar saídas. O idioma suporta dois modos principais: conversão implícita, onde o interpretador realiza ajustes automáticos, e conversão explícita, que requer intervenção manual via funções dedicadas.
Conversão Implícita (Promoção de Tipo)
Este processo ocorre durante operações aritméticas quando operandos possuem tipos distintos. Python eleva automaticamente o tipo de menor hierarquia para o tipo sueprior, evitando perda de precisão. A interação entre inteiros (int) e flutuantes (float) é um caso clássico.
# Demonstração de promoção automática de tipo
valor_inteiro = 456
valor_decimal = 3.1415
# A soma resulta em um float devido à promoção
resultado = valor_inteiro + valor_decimal
print("Tipo de valor_inteiro:", type(valor_inteiro)) # Saída: <class>
print("Tipo de valor_decimal:", type(valor_decimal)) # Saída: <class>
print("Resultado da operação:", resultado) # Saída: 459.1415
print("Tipo do resultado:", type(resultado)) # Saída: <class>
</class></class></class>
Contudo, essa conversão automática não se estende a todos os cenários. Tentar combinar um número com uma string, por exemplo, levanta uma exceção TypeError.
# Cenário incompatível: inteiros e strings não se combinam diretamente
quantidade = 100
codigo = "ABC123"
# A linha seguinte causaria um erro de tipo:
# print(quantidade + codigo)
Conversão Explícita
Quando o desenvolvedor precisa garantir uma transformação específica, utiliza funções de conversão integradas. Essas funções permitem alterar o tipo de um valor de forma controlada.
Conversão para Tipo Inteiro
a = int(3) # Resultado: 3
b = int(9.7) # Resultado: 9 (truncamento)
c = int("42") # Resultado: 42
d = int("0b1010", 2) # Resultado: 10 (conversão de binário)
Conversão para Tipo Flutuante
e = float(7) # Resultado: 7.0
f = float(2.718) # Resultado: 2.718
g = float("3.14") # Resultado: 3.14
h = float("1e-3") # Resultado: 0.001
Conversão para Tipo String
i = str(100) # Resultado: '100'
j = str(3.14159) # Resultado: '3.14159'
k = str(True) # Resultado: 'True'
l = str([1, 2, 3]) # Resultado: '[1, 2, 3]'
A conversão explícita resolve o problema anterior, permitindo a operação entre tipos disitntos após a devida transformação.
numero_a = 250
numero_b_texto = "150"
print("Tipo inicial de numero_a:", type(numero_a)) # Saída: <class>
print("Tipo inicial de numero_b_texto:", type(numero_b_texto)) # Saída: <class>
# Convertendo a string para inteiro
numero_b = int(numero_b_texto)
print("Tipo após conversão de numero_b:", type(numero_b)) # Saída: <class>
# Operação agora válida
soma_total = numero_a + numero_b
print("Resultado da soma:", soma_total) # Saída: 400
print("Tipo da soma:", type(soma_total)) # Saída: <class>
</class></class></class></class>
Funções de Conversão Incorporadas
Além das funções básicas, Python oferece um conjunto diversificado para manipulação de tipos:
int(x [,base]): Converte x para inteiro, opcionalmente especificando a base numérica.float(x): Converte x para ponto flutuante.complex(real [,imag]): Constrói um número complexo.str(x): Gera a representação em string do objeto x.repr(x): Produz uma string que representa oficialmente o objeto x.eval(expression): Interpreta e executa uma expressão Python contida em uma string.tuple(iterable): Converte um iterável em uma tupla.list(iterable): Converte um iterável em uma lista.set(iterable): Cria um conjunto mutável a partir de um iterável.dict(mapping): Constrói um dicionário; o argumento deve ser um mapeamento ou sequência de pares chave-valor.frozenset(iterable): Cria um conjunto imutável.chr(i): Converte um inteiro (ponto de código Unicode) em um caractere.ord(c): Retorna o ponto de código Unicode de um caractere.hex(i): Converte um inteiro em sua representação hexadecimal em string.oct(i): Converte um inteiro em sua representação octal em string.