W3docs

Conversão de Tipos em Python: Converta Entre Tipos de Dados

Aprenda conversão de tipos em Python com exemplos claros: converta entre int, float, str, bool e coleções. Abrange casting implícito e explícito.

A conversão de tipos (também chamada de type casting) é o processo de converter um valor de um tipo de dado para outro. Python suporta isso por meio de um conjunto de funções construtoras integradas — int(), float(), str(), bool(), list(), tuple(), set() e outras. Saber quando e como realizar casting é essencial para escrever programas Python corretos e flexíveis.

Este capítulo abrange:

  • A diferença entre casting implícito e explícito
  • Todas as principais funções de casting integradas com exemplos funcionais
  • Conversões de base numérica (hex, oct, bin e de volta)
  • Conversões de tipos de coleção (list, tuple, set)
  • Regras de verdadeiro/falso (truthy/falsy) do boolean e suas armadilhas de casting
  • Erros comuns (TypeError, ValueError) e como evitá-los

Casting Implícito vs Explícito

Python distingue entre dois tipos de conversão de tipos.

Casting Implícito

O casting implícito acontece automaticamente quando Python precisa reconciliar dois tipos compatíveis em uma expressão. Nenhuma chamada de função é necessária — Python promove o tipo "mais estreito" para evitar perda de dados.

O caso mais comum é misturar inteiros e floats em operações aritméticas. Python sempre converte o inteiro para float para que o resultado capture a parte decimal:

python— editable, runs on the server

Python não converte implicitamente entre tipos não relacionados, como strings e números. Tentar "10" + 5 gera um TypeError. Para esses casos, você precisa de casting explícito.

Casting Explícito

O casting explícito significa chamar uma função construtora para converter um valor manualmente:

python— editable, runs on the server

O restante deste capítulo cobre cada função importante de casting explícito em detalhes.

Casting Numérico: int(), float(), complex()

int() — Converter para Inteiro

int() aceita inteiros, floats, booleanos e strings numéricas. Ao converter um float, ele trunca (descarta a parte decimal) em vez de arredondar:

# float → int  (truncates, does NOT round)
print(int(10.9))   # 10
print(int(-10.9))  # -10

# string → int
print(int("42"))   # 42

# bool → int
print(int(True))   # 1
print(int(False))  # 0

Observe que int(-10.9) retorna -10, não -11. Python trunca em direção a zero, não em direção ao infinito negativo (isso seria math.floor()).

float() — Converter para Float

float() aceita inteiros, booleanos e strings numéricas (incluindo "inf" e "nan"):

print(float(10))      # 10.0
print(float("3.14"))  # 3.14
print(float(True))    # 1.0
print(float("inf"))   # inf

complex() — Converter para Número Complexo

complex() cria um número complexo a partir de partes real e imaginária, ou de uma string:

print(complex(3, 4))    # (3+4j)
print(complex("3+4j"))  # (3+4j)

Casting de String: str()

str() converte quase qualquer objeto Python para sua representação em string. Isso é útil para concatenação e ao construir saídas:

age = 30
message = "I am " + str(age) + " years old."
print(message)  # I am 30 years old.

print(str(3.14))   # '3.14'
print(str(True))   # 'True'
print(str(None))   # 'None'

Para formatar números dentro de strings, consulte o capítulo sobre f-strings em Python para uma abordagem mais ergonômica.

Casting Booleano: bool() e Valores Truthy/Falsy

bool() converte qualquer valor para True ou False usando as regras de truthy/falsy do Python. Memorizar quais valores são falsy é importante porque as condições em instruções if e loops while dependem das mesmas regras implicitamente.

Valores falsy — todos esses avaliam como False:

print(bool(0))      # False  — zero integer
print(bool(0.0))    # False  — zero float
print(bool(""))     # False  — empty string
print(bool([]))     # False  — empty list
print(bool(None))   # False  — None

Valores truthy — todo o resto avalia como True:

print(bool(1))      # True
print(bool(-1))     # True  — any non-zero number
print(bool("a"))    # True
print(bool([0]))    # True  — a list with one element

Armadilha comum: Converter uma string para bool sempre retorna True, a menos que a string esteja vazia — até mesmo bool("False") é True. Para verificar se uma string representa um boolean falsy, você deve compará-la explicitamente:

# This is WRONG — bool("False") is True!
user_input = "False"
print(bool(user_input))              # True  (non-empty string)

# Correct approach: compare the string
print(user_input.lower() == "true")  # False

Conversões de Base Numérica

Analisando Inteiros em Outras Bases com int()

int() aceita um segundo argumento opcional que especifica a base da string de origem. Isso permite analisar literais binários, octais e hexadecimais:

print(int("1010", 2))   # 10  — binary string
print(int("17", 8))     # 15  — octal string
print(int("ff", 16))    # 255 — hexadecimal string

# Pass 0 to auto-detect Python prefix notation
print(int("0b1010", 0)) # 10
print(int("0o17", 0))   # 15
print(int("0xFF", 0))   # 255

Convertendo Inteiros para Strings de Base

Python tem três funções integradas que formatam um inteiro como uma string com prefixo de base:

print(bin(10))   # '0b1010'
print(oct(8))    # '0o10'
print(hex(255))  # '0xff'

Essas funções retornam strings, não inteiros. Se você precisar da string sem o prefixo, use fatiamento: bin(10)[2:] resulta em '1010'.

Conversões de Tipos de Coleção

Você pode converter entre list, tuple e set usando suas funções construtoras. Converter para set remove duplicatas e perde a ordem:

# list → tuple
coords = [10, 20, 30]
print(tuple(coords))   # (10, 20, 30)

# tuple → list
point = (4, 5, 6)
mutable = list(point)
mutable.append(7)
print(mutable)         # [4, 5, 6, 7]

# list → set  (removes duplicates)
numbers = [1, 2, 2, 3, 3, 3]
unique = set(numbers)
print(unique)          # {1, 2, 3}

Converter uma string para uma lista divide-a em caracteres individuais:

print(list("hello"))   # ['h', 'e', 'l', 'l', 'o']

Todas as Conversões Numéricas e de String: Referência Rápida

Os exemplos abaixo mostram toda a gama de casting numérico e de string em um só lugar:

Python casting numeric

# Converting an integer to a floating-point number
x = 10
y = float(x)
print(y)

# Converting a floating-point number to an integer
x = 10.5
y = int(x)
print(y)

# Converting a string to an integer
x = "10"
y = int(x)
print(y)

# Converting a string to a floating-point number
x = "10.5"
y = float(x)
print(y)

# Converting an integer to a string
x = 10
y = str(x)
print(y)

# Converting a floating-point number to a string
x = 10.5
y = str(x)
print(y)

# Converting a number to a boolean
x = 0
y = bool(x)
print(y)

x = 10
y = bool(x)
print(y)

Erros Comuns

TypeError

Um TypeError é gerado quando você passa um tipo que a função não consegue converter de forma alguma — por exemplo, passar uma lista para int():

Python casting unsupported type to int

python— editable, runs on the server

Saída:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

ValueError

Um ValueError é gerado quando o tipo está correto (por exemplo, uma string) mas o valor não pode ser convertido — por exemplo, uma palavra passada para float():

Python casting string to float

python— editable, runs on the server

Saída:

ValueError: could not convert string to float: 'hello'

Perda de Precisão ao Converter Float para Int

Converter um float para int trunca silenciosamente a parte decimal. Não há aviso — e para números negativos, o comportamento pode ser surpreendente:

Python casting float to int

python— editable, runs on the server

Saída:

10

Se precisar de arredondamento, use round() antes de converter, ou use math.floor() / math.ceil() para controlar a direção explicitamente.

Casting Seguro com try/except

Quando seu programa recebe dados de entrada do usuário, arquivos ou APIs externas, você não pode saber antecipadamente se um valor será convertido com sucesso. Use um bloco try/except para tratar falhas sem travar o programa:

Python safe casting with try/except

python— editable, runs on the server

Saída:

Conversion failed: invalid literal for int() with base 10: 'hello'
10

Esse padrão é especialmente útil ao processar campos de formulário ou linhas de CSV, onde qualquer coluna pode conter dados inesperados.

Prática

Prática
In Python, how does casting take place and what are its functions?
In Python, how does casting take place and what are its functions?
Was this page helpful?