Como utilizar named tuple no Python
Escrevendo um Código Pythonic e Limpo com namedtuple
A linguagem Python possui um módulo chamado collections
que disponibiliza uma função de fábrica chamada namedtuple()
. Essa função foi especialmente projetada para tornar o seu código mais Pythonic quando você está trabalhando com tuplas. Com o namedtuple()
, você pode criar tipos de sequência imutáveis que permitem acessar seus valores usando nomes descritivos de campos e a notação de ponto em vez de índices inteiros confusos.
Se você tem alguma experiência em Python, sabe que escrever um código Pythonic é uma habilidade fundamental para os desenvolvedores. Neste tutorial, você irá aprimorar essa habilidade usando namedtuple
.
Índice
- Usando namedtuple para escrever um código Pythonic
- Criando classes semelhantes a tuplas com namedtuple()
- Fornecendo argumentos obrigatórios para namedtuple()
- Usando argumentos opcionais com namedtuple()
- Explorando recursos adicionais de classes namedtuple
- Criando instâncias namedtuple a partir de iteráveis
- Convertendo instâncias namedtuple em dicionários
- Substituindo campos em instâncias namedtuple existentes
- Explorando atributos adicionais de namedtuple
- Escrevendo um código Pythonic com namedtuple
- Usando nomes de campos em vez de índices
- Retornando múltiplos valores nomeados de funções
- Reduzindo o número de argumentos em funções
- Lendo dados tabulares de arquivos e bancos de dados
- Usando namedtuple vs Outras estruturas de dados
- namedtuple vs Dicionários
- namedtuple vs Data Class
- namedtuple vs typing.NamedTuple
- Criando subclasses de classes namedtuple
- Medindo o tempo de criação: tupla vs namedtuple
- Conclusão
Para aproveitar ao máximo este tutorial, é necessário ter um entendimento geral da filosofia do Python em relação à escrita de código Pythonic e legível. Você também precisa ter conhecimentos básicos sobre:
- Tuplas
- Dicionários
- Classes e programação orientada a objetos
- Classes de dados
- Dicas de tipo
Se você não possui todos os conhecimentos necessários antes de começar este tutorial, tudo bem! Você pode parar e revisar os recursos mencionados conforme necessário.
Usando namedtuple para escrever um código Pythonic
Uma das principais vantagens de usar namedtuple é a possibilidade de criar um tipo de sequência imutável com campos nomeados. Isso torna o código mais legível e evita o uso de índices confusos. Veja um exemplo:
Agora, podemos criar uma instância dessa namedtuple e acessar seus valores usando nomes descritivos de campo:
Essa sintaxe é mais legível do que a indexação tradicional de uma tupla. Além disso, as instâncias namedtuple são imutáveis, ou seja, seus valores não podem ser alterados após a criação.
Criando classes semelhantes a tuplas com namedtuple()
Você também pode utilizar a função namedtuple para criar classes semelhantes a tuplas com nomes de campo pré-definidos. Essas classes são úteis quando você precisa trabalhar com conjuntos de dados imutáveis.
Fornecendo argumentos obrigatórios para namedtuple()
Usando argumentos opcionais com namedtuple()
Explorando recursos adicionais de classes namedtuple
As classes namedtuple possuem recursos adicionais que podem ser úteis em determinadas situações. Vamos explorar alguns deles.
Criando instâncias namedtuple a partir de iteráveis
Convertendo instâncias namedtuple em dicionários
Substituindo campos em instâncias namedtuple existentes
Explorando atributos adicionais de namedtuple
Escrevendo um código Pythonic com namedtuple
Além de deixar o código mais legível, as instâncias namedtuple podem ser utilizadas para escrever um código mais Pythonic.
Usando nomes de campos em vez de índices
Retornando múltiplos valores nomeados de funções
Reduzindo o número de argumentos em funções
Lendo dados tabulares de arquivos e bancos de dados
Usando namedtuple vs outras estruturas de dados
Ao decidir qual estrutura de dados utilizar, é importante comparar as namedtuple com outras opções disponíveis em Python.
namedtuple vs Dicionários
As namedtuple possuem o benefício de imutabilidade, o que garante que seus valores não podem ser alterados após a criação. Além disso, você pode acessar seus valores utilizando nomes descritivos de campo e a notação de ponto. Já os dicionários são mutáveis e permitem a associação de chaves e valores. A escolha entre namedtuple e dicionários depende do contexto e dos requisitos do seu código.
namedtuple vs Data Class
As namedtuple são uma opção mais leve para representar estruturas de dados imutáveis. Por outro lado, as data classes, introduzidas no Python 3.7, fornecem recursos adicionais, como a definição automática de métodos especiais e a capacidade de realizar validações. Use namedtuple quando você precisa de uma estrutura de dados simples e leve, e data classes quando precisa de mais funcionalidades.
namedtuple vs typing.NamedTuple
A biblioteca typing
do Python possui o decorador NamedTuple
que pode ser utilizado para criar subclasses de namedtuple
. Isso permite adicionar métodos e atributos às classes namedtuple. Use namedtuple
quando você precisa apenas de uma estrutura simples de armazenamento de dados e typing.NamedTuple
quando você precisa de mais flexibilidade no design da sua classe namedtuple.
Criando subclasses de classes namedtuple
As classes namedtuple podem ser subclassificadas para adicionar mais funcionalidades e personalização. Essa é uma ótima maneira de estender as capabilities de uma namedtuple de maneira flexível.
Aqui está um exemplo de como criar uma subclass para uma namedtuple:
Medindo o tempo de criação: tupla vs namedtuple
O tempo de criação de uma namedtuple pode ser menor do que o tempo de criação de uma tupla regular. Isso ocorre porque as namedtuple são implementadas em C e otimizadas para desempenho. A diferença de desempenho pode variar dependendo do tamanho do objeto.
Conclusão
As namedtuple são uma ferramenta poderosa para escrever um código Pythonic e limpo. Elas fornecem uma maneira conveniente de criar estruturas de dados imutáveis com campos descritivos. Além disso, você pode aproveitar recursos adicionais das namedtuple, como a conversão para dicionários e a substituição de campos.
Ao utilizar namedtuple, você melhora a legibilidade do seu código, tornando-o mais fácil de entender e manter. Espero que este tutorial tenha ajudado você a aprender sobre as namedtuple e como usar essa estrutura de dados eficientemente em seus projetos Python. Continue praticando e explorando todas as possibilidades que as namedtuple oferecem!