O Operador de Desempacotamento * em Listas e Dicionários

Publicado:
Atualizado:
PorJeferson Peter
1 min de leitura
Python
Compartilhe este post:

Conforme o código Python cresce, combinar estruturas de dados vira algo comum.
Listas aumentam, dicionários se juntam, argumentos são repassados.

Os operadores de unpacking * e ** existem para tornar essas operações mais claras e expressivas.


Unpacking de listas e tuplas com *

numbers = [3, 4, 5]
combined = [1, 2, *numbers]

print(combined)
# [1, 2, 3, 4, 5]

Isso evita concatenação manual e deixa a intenção clara.


Unpacking de dicionários com **

defaults = {"host": "localhost", "port": 5432}
overrides = {"port": 5433}

config = {**defaults, **overrides}
print(config)
# {'host': 'localhost', 'port': 5433}

Valores posteriores sobrescrevem os anteriores, o que é ótimo para configurações.


Unpacking em chamadas de função

def connect(host, port):
    print(host, port)

params = {"host": "localhost", "port": 5432}

connect(**params)

Muito útil ao passar dados entre camadas ou APIs.


Combinando *args e **kwargs

def wrapper(*args, **kwargs):
    return target(*args, **kwargs)

O unpacking é fundamental em decorators e wrappers.


Um erro comum a evitar

Evite exagerar no unpacking quando isso esconde a lógica:

# Mais difícil de entender
data = [*get_items(), *get_more_items(), *get_even_more()]

Se a origem dos dados importa, etapas explícitas costumam ser melhores.


Conclusão

No Python do mundo real, os operadores de unpacking ajudam a reduzir ruído e deixar a intenção clara.

Usados com cuidado, * e ** tornam o código mais legível — não mais mágico.

Compartilhe este post: