Neste artigo
Tupla é uma sequência de valores, separados por vírgula, que não pode ser alterada depois de criada. Desempacotar é distribuir os valores de uma sequência em várias variáveis de uma vez, em uma única linha de código.
No artigo sobre vetores e matrizes você aprendeu a guardar vários valores em um nome só. E no artigo sobre funções, viu que uma função devolve um resultado. Agora olhe esta linha de Python: a, b = b, a. Duas variáveis de um lado, duas do outro, e nenhuma lista à vista. Linhas assim vão aparecer bastante nos próximos artigos, e este aqui existe para que nenhuma delas trave a sua leitura.
Pense em um ponto no mapa. Ele é formado por dois números, a latitude e a longitude, que andam sempre juntos e sempre na mesma ordem. Se você trocar um dos dois, já é outro lugar. Ninguém “edita” um ponto: escolhe outro ponto. A tupla é isso: um pacote fechado de valores, em que a posição de cada um tem significado.
Como criar uma tupla em Python?
Basta separar os valores com vírgula. Os parênteses são opcionais na maioria dos casos, mas ajudam a enxergar onde a tupla começa e termina:
ponto = (3, 5) print(ponto) print(ponto[0]) print(len(ponto)) cores = "azul", "verde", "roxo" print(cores) um_so = (7,) print(um_so, len(um_so))
Saída:
(3, 5)
3
2
('azul', 'verde', 'roxo')
(7,) 1
Repare na última linha. Para criar uma tupla com um valor só, a vírgula é obrigatória: (7,). É a vírgula que faz a tupla, e não os parênteses. O tutorial oficial do Python descreve a tupla exatamente assim: valores separados por vírgula.
Qual é a diferença entre tupla e lista?
As duas guardam valores em ordem, e as duas usam índice a partir do zero. A diferença está no que acontece depois da criação:
| Lista | Tupla | |
|---|---|---|
| Como se escreve | [3, 5] | (3, 5) |
| Dá para trocar um valor? | Sim | Não |
| Dá para acrescentar ou remover? | Sim | Não |
| Uso mais comum | Coleção de itens do mesmo tipo, que cresce e muda | Registro fechado, em que cada posição tem um significado |
Veja a diferença na prática:
compras = ["arroz", "feijão"] compras[0] = "macarrão" print(compras) ponto = (3, 5) ponto[0] = 10
Saída (da mensagem de erro, só a última linha):
['macarrão', 'feijão'] TypeError: 'tuple' object does not support item assignment
A lista aceitou a troca. A tupla não: o programa parou com um erro, e a mensagem diz que a tupla não aceita atribuição em uma posição. Sacou? Quando um conjunto de valores não deve mudar, a tupla protege você de mudar sem querer.
O que é desempacotar?
É o caminho de volta: pegar a tupla e entregar cada valor para uma variável. A ordem manda: o primeiro valor vai para a primeira variável, o segundo para a segunda.
aluno = ("Ana", 30)
nome, idade = aluno
print(nome)
print(idade)
Saída:
Ana 30

O tutorial do Python chama a ida de empacotar (vários valores viram uma tupla) e a volta de desempacotar. E avisa: do lado esquerdo do sinal de igual, é preciso ter a mesma quantidade de variáveis que a sequência tem de valores.
ATENÇÃO: desempacotar funciona com qualquer sequência, e não só com tupla. Uma lista de dois valores também pode ser desempacotada em duas variáveis.
Como trocar dois valores de lugar?
Este é o uso que você mais vai ver nos algoritmos de ordenação. Trocar dois valores parece simples, mas tem uma armadilha: se você escrever a = b, o valor antigo de a some. A saída clássica é usar uma terceira variável para guardar esse valor. Veja em C:
#include <stdio.h>
int main(void)
{
int a = 5;
int b = 3;
int auxiliar = a; // guarda o 5 antes de perder
a = b;
b = auxiliar;
printf("%d %d\n", a, b);
return 0;
}
Saída:
3 5
Em Python, o desempacotamento resolve em uma linha:
a = 5 b = 3 a, b = b, a print(a, b)
Saída:
3 5
O Python primeiro monta a tupla do lado direito, com os valores atuais de b e a, e só depois distribui. Por isso nada se perde. O tutorial oficial resume: a atribuição múltipla é a combinação de empacotar com desempacotar.

Em PHP a ideia é a mesma, com colchetes:
<?php $a = 5; $b = 3; [$a, $b] = [$b, $a]; echo "$a $b\n";
Saída:
3 5
O manual do PHP chama esse recurso de desestruturação de array, e a escrita com colchetes existe desde o PHP 7.1. Foque no conceito, e não na linguagem!
Como uma função devolve dois valores?
Uma função devolve um resultado só. Mas esse resultado pode ser uma tupla, e aí cabem vários valores dentro dele:
def menor_e_maior(valores):
menor = valores[0]
maior = valores[0]
for valor in valores:
if valor < menor:
menor = valor
if valor > maior:
maior = valor
return menor, maior
notas = [7.5, 8.0, 6.5, 9.0]
resultado = menor_e_maior(notas)
print(resultado)
menor, maior = menor_e_maior(notas)
print(menor)
print(maior)
Saída:
(6.5, 9.0) 6.5 9.0
Na primeira chamada, o resultado ficou inteiro em uma variável, e o print mostrou a tupla. Na segunda, o resultado foi desempacotado direto em menor e maior. Repare que o return menor, maior nem usa parênteses: a vírgula já monta a tupla.
Aí você pergunta: e o for com duas variáveis?
É desempacotamento também! Quando cada item de uma lista é uma tupla, o for pode abrir o item em duas variáveis a cada volta:
alunos = [("Ana", 7.5), ("Bruno", 8.5), ("Carla", 6.5)]
for nome, nota in alunos:
print(nome, nota)
for posicao, aluno in enumerate(alunos):
print(posicao, aluno[0])
Saída:
Ana 7.5 Bruno 8.5 Carla 6.5 0 Ana 1 Bruno 2 Carla
Na segunda parte aparece a função enumerate, que entrega dois valores por volta: a posição e o item. O tutorial do Python mostra esse mesmo uso, com duas variáveis no for.
Em PHP, o foreach aceita os colchetes no mesmo lugar:
<?php
$alunos = [["Ana", 7.5], ["Bruno", 8.5], ["Carla", 6.5]];
foreach ($alunos as [$nome, $nota]) {
echo "$nome $nota\n";
}
Saída:
Ana 7.5 Bruno 8.5 Carla 6.5
Em C não existe tupla. Para agrupar valores de tipos diferentes, a linguagem oferece a struct, que é assunto para outro artigo.
Quais são os erros mais comuns com tuplas?
- Esquecer a vírgula na tupla de um valor só.
(5)é apenas o número 5 entre parênteses. A tupla é(5,). - Desempacotar com a quantidade errada. Escrever
a, b = (1, 2, 3)faz o programa parar com a mensagemValueError: too many values to unpack (expected 2): valores demais para duas variáveis. - Tentar alterar a tupla. Se o conjunto precisa mudar, o certo é usar uma lista.
- Trocar a ordem das variáveis. O desempacotamento não olha para os nomes, só para a posição. Em
idade, nome = ("Ana", 30), a variávelidaderecebe “Ana”.
Confira o primeiro erro da lista:
numero = (5) print(type(numero)) tupla = (5,) print(type(tupla))
Saída:
<class 'int'> <class 'tuple'>
Agora é com você!
Primeiro no papel, sem rodar nada. As variáveis começam assim: a = 1, b = 2 e c = 3. Depois da linha a, b, c = c, a, b, quanto vale cada uma? Anote a resposta e só então confira no computador.
Depois, escreva uma função que recebe uma lista de notas e devolve duas coisas de uma vez: a soma e a média. Chame a função e desempacote o resultado em duas variáveis. Tente sozinho, sem pedir a resposta pronta para ninguém, nem para a IA!
No próximo artigo desta série de base, a list comprehension: como montar uma lista inteira em uma linha. Até lá!
Confiança Sempre!!!
Fontes:
- Python Software Foundation, tutorial oficial. Data Structures, com as seções sobre tuplas e sequências, empacotamento, desempacotamento e o uso de enumerate no for.
- PHP, manual oficial. list, com a atribuição de variáveis a partir de um array e a desestruturação de arrays.
- PHP, proposta de mudança da linguagem (RFC). Square bracket syntax for array destructuring assignment, com a escrita em colchetes para a desestruturação.
- Python Software Foundation, proposta de melhoria da linguagem. PEP 3132: Extended Iterable Unpacking, com o desempacotamento em que um nome recebe os itens restantes.
- University of Vermont, livro do curso CS 1210. Sequence unpacking, com o desempacotamento de tuplas e de retornos de função.
- Cornell University, Center for Advanced Computing. Tuples, dictionaries, sets, com a tupla como sequência que não muda e o uso como chave de dicionário.
- Python for Everybody, capítulo 10. Tuples, com a atribuição por tupla e o for com duas variáveis.
- Lista de discussão Tutor, python.org. Why can you swap an immutable tuple?, com a explicação de que a troca de valores é um desempacotamento de sequência.
- OpenMV, documentação oficial. Tuples, com a criação da tupla só com vírgulas.
- Os exemplos deste artigo foram executados em Python 3.13, PHP 8.3 e GCC 13.

Continue a conversa