Tipos de Dados
**************

Os módulos descritos neste capítulo fornecem uma variedade de tipos de
dados especializados, como datas e horas, vetores de tipo fixo, filas
de heap, filas de extremidade dupla e enumerações.

O Python também fornece alguns tipos de dados embutidos, em especial
"dict", "list", "set" e "frozenset" e "tuple". A classe "str" é usada
para armazenar strings Unicode, e as classes "bytes" e "bytearray" são
usadas para armazenar dados binários.

Os seguintes módulos estão documentados neste capítulo:

* "datetime" --- Tipos básicos de data e hora

  * Objetos Conscientes e Ingênuos

  * Constantes

  * Tipos disponíveis

    * Propriedades Comuns

    * Determinando se um Objeto é Consciente ou Ingênuo

  * Objetos "timedelta"

    * Exemplos de uso: "timedelta"

  * Objetos "date"

    * Exemplos de uso: "date"

  * Objetos "datetime"

    * Exemplos de uso: "datetime"

  * Objetos "time"

    * Exemplos de uso: "time"

  * Objetos "tzinfo"

  * Objetos "timezone"

  * Comportamento de "strftime()" e "strptime()"

    * Códigos de formatação para "strftime()" e "strptime()"

    * Detalhes técnicos

* "calendar" --- General calendar-related functions

* "collections" --- Tipos de dados de contêineres

  * Objetos "ChainMap"

    * Exemplos e Receitas de "ChainMap"

  * Objetos "Counter"

  * Objetos "deque"

    * Receitas de "deque"

  * Objetos "defaultdict"

    * Exemplos de "defaultdict"

  * Função de fábrica para tuplas com campos nomeados "namedtuple()"

  * Objetos "OrderedDict"

    * Exemplos e receitas de "OrderedDict"

  * Objetos "UserDict"

  * Objetos "UserList"

  * Objetos "UserString"

* "collections.abc" --- Classes Base Abstratas para Contêineres

  * Classes Base Abstratas de Coleções

* "heapq" --- Algoritmo de fila heap

  * Exemplos básicos

  * Notas de implementação da fila de prioridade

  * Teoria

* "bisect" --- Algoritmo de bisseção de vetor

  * Pesquisando em listas ordenadas

  * Outros exemplos

* "array"--- Vetores eficientes de valores numéricos

* "weakref" --- Referências fracas

  * Objetos referência fraca

  * Exemplo

  * Objetos finalizadores

  * Comparing finalizers with "__del__()" methods

* "types" --- Criação de tipos dinâmicos e nomes para tipos embutidos

  * Criação de tipos dinâmicos

  * Tipos padrão do interpretador

  * Classes e funções de utilidades adicionais

  * Funções de utilidade de corrotina

* "copy" --- Operações de cópia profunda e cópia rasa

* "pprint" --- Impressão Bonita de Dados

  * Objetos PrettyPrinter

  * Exemplo

* "reprlib" --- Implementação alternativa à "repr()"

  * Objetos Repr

  * Subclassing Repr Objects

* "enum" --- Suporte a enumerações

  * Conteúdo do módulo

  * Creating an Enum

  * Acesso programático aos membros da enumeração e seus atributos.

  * Duplicar membros do enum e seus valores.

  * Garantindo valores únicos de enumeração

  * Usando valores automáticos

  * Iteração

  * Comparações

  * Membros e atributos permitidos em enumerações

  * Restricted Enum subclassing

  * Pickling

  * API funcional

  * Derived Enumerations

    * IntEnum

    * IntFlag

    * Sinalizador

    * Outros

  * Quando usar "__new__()" vs. "__init__()"

  * Interesting examples

    * Omitting values

      * Using "auto"

      * Using "object"

      * Using a descriptive string

      * Usando um "__new__()" personalizado

    * OrderedEnum

    * DuplicateFreeEnum

    * Planet

    * TimePeriod

  * How are Enums different?

    * Enum Classes

    * Enum Members (aka instances)

    * Finer Points

      * Nomes "__dunder__" suportados

      * Nomes "_sunder_" suportados

      * "Enum" member type

      * Boolean value of "Enum" classes and members

      * "Enum" classes with methods

      * Combining members of "Flag"
