Imutabilidade em Python

0 – Python
6 – Funcional
6.1 – Funcoes puras
6.2 – Imutabilidade (tuplas, frozenset, namedtuple)
6.3 – Funcoes de alta ordem (map, filter, reduce)
6.4 – Comprehensions (list, dict, set)
6.5 – Geradores (yield, generator expressions)
6.6 – Decorators (@)
6.7 – Closures
6.8 – Funcoes lambda
LEGENDA
Nivel_1
Nivel_2
Nivel_3

Imutabilidade significa que um objeto não pode ser alterado após criado. Qualquer modificação gera um novo objeto na memória. Primeiramente, isso evita efeitos colaterais indesejados em funções. Por exemplo, tuplas são imutáveis, enquanto listas são mutáveis. Além disso, frozenset e namedtuple também seguem esse princípio. A voz passiva é usada aqui: “os dados originais são preservados para sempre”. Quando utilizar imutabilidade? Em chaves de dicionários e conjuntos. Também em programação funcional e dados compartilhados entre threads. Python oferece estruturas imutáveis nativas para esses casos. Vamos explorar tuplas, frozenset e namedtuple em detalhes. Três subtítulos guiarão você pelo mundo da imutabilidade. Ao final, você escolherá a estrutura certa para cada situação.

Tuplas: listas imutáveis

Tuplas são sequências imutáveis de elementos em Python. Você cria uma tupla com parênteses: (1, 2, 3). Quando usar tuplas? Em dados que não devem mudar. Por exemplo, coordenadas geográficas ou cores RGB. A voz passiva é aplicada: “os elementos são acessados por índice”. Exemplo de tuplas e suas características:

Tuplas são mais rápidas e consomem menos memória que listas. Use tuplas sempre que os dados forem fixos e imutáveis.

Frozenset: conjuntos imutáveis

Frozenset é a versão imutável de um set (conjunto). Ele suporta operações de conjunto sem alterar os dados. Quando usar frozenset? Como chave de dicionário. Também para armazenar dados únicos que não devem mudar. A voz passiva é aplicada: “os elementos são únicos e imutáveis”. Exemplo de frozenset:

Frozenset é ideal para conjuntos constantes e chaves de dicionário. Ele mantém todas as operações úteis dos sets sem a mutabilidade.

NamedTuple: tuplas com nomes de campos

NamedTuple combina imutabilidade de tupla com nomes de campos. Ela funciona como uma classe leve e imutável. Quando usar NamedTuple? Em estruturas de dados simples. Por exemplo, pontos, pessoas ou produtos imutáveis. A voz passiva é aplicada: “os campos são acessados por nome ou índice”. Exemplo de NamedTuple:

NamedTuple oferece a melhor experiência para dados imutáveis. A fórmula da escolha entre estruturas imutáveis: \(E = \begin{cases} \text{tupla} & \text{simples e sem nomes} \\ \text{frozenset} & \text{operações de conjunto} \\ \text{namedtuple} & \text{acesso por nome} \end{cases}\) Imutabilidade não é apenas uma restrição, é uma garantia. Use-a para tornar seu código mais seguro e previsível. Tuplas para sequências simples e rápidas. Frozenset para conjuntos únicos que servem como chaves. NamedTuple para objetos leves com campos nomeados. Seu código será mais robusto e fácil de entender.

Deixe um comentário