Types de données
****************

Les modules documentés dans ce chapitre fournissent une gamme de types
de données spécialisés tel que les dates et les heures, les listes à
type prédéfini, les *heap queue*, les queues synchronisées et les
énumérations.

Python fournit aussi quelques types natifs, typiquement "dict",
"list", "set", "frozenset", et "tuple". La classe "str" est utilisée
pour stocker des chaînes Unicode, et les classes "bytes" et
"bytearray" des données binaires.

Les modules suivants sont documentés dans ce chapitre :

* "datetime" — Types de base pour la date et l'heure

  * Objets avisés et naïfs

  * Constantes

  * Types disponibles

    * Propriétés communes

    * Catégorisation d'un objet en « avisé » ou « naïf »

  * Objets "timedelta"

    * Exemples d'utilisation de la classe "timedelta" :

  * Objets "date"

    * Exemple d'utilisation de la classe "date" :

  * Objets "datetime"

    * Exemple d'utilisation de la classe "datetime" :

  * Objets "time"

    * Exemples d'utilisation de "time"

  * Objets "tzinfo"

  * Objets "timezone"

  * Comportement de "strftime()" et "strptime()"

    * Codes de formatage de "strftime()" et "strptime()"

    * Détail technique

* "calendar" — Fonctions calendaires générales

* "collections" — Types de données de conteneurs

  * Objets "ChainMap"

    * Exemples et cas pratiques utilisant "ChainMap"

  * Objets "Counter"

  * Objets "deque"

    * Cas pratiques utilisant "deque"

  * Objets "defaultdict"

    * Exemples utilisant "defaultdict"

  * "namedtuple()": fonction de construction pour *n-uplets*
    (*tuples*) avec des champs nommés

  * Objets "OrderedDict"

    * Exemples et cas pratiques utilisant "OrderDict"

  * Objets "UserDict"

  * Objets "UserList"

  * Objets "UserString"

* "collections.abc" --- Classes de base abstraites pour les conteneurs

  * Classes de base abstraites de collections

* "heapq" — File de priorité basée sur un tas

  * Exemples simples

  * Notes d'implémentation de la file de priorité

  * Théorie

* "bisect" — Algorithme de bissection de listes

  * Chercher dans des listes triées

  * Autres Exemples

* "array" — Tableaux efficaces de valeurs numériques

* "weakref" --- Weak references

  * Objets à références faibles

  * Exemple

  * Finalizer Objects

  * Comparing finalizers with "__del__()" methods

* "types" --- Dynamic type creation and names for built-in types

  * Dynamic Type Creation

  * Standard Interpreter Types

  * Additional Utility Classes and Functions

  * Coroutine Utility Functions

* "copy" — Opérations de copie superficielle et récursive

* "pprint" — L’affichage élégant de données

  * Les Objets PrettyPrinter

  * Exemple

* "reprlib" --- Alternate "repr()" implementation

  * Repr Objects

  * Subclassing Repr Objects

* "enum" — Énumerations

  * Contenu du module

  * Création d'une *Enum*

  * Accès dynamique aux membres et à leurs attributs

  * Duplication de membres et de valeurs

  * Coercition d'unicité des valeurs d'une énumération

  * Valeurs automatiques

  * Itération

  * Comparaisons

  * Membres et attributs autorisés dans une énumération

  * Restrictions sur l'héritage

  * Sérialisation

  * API par fonction

  * Énumérations dérivées

    * IntEnum

    * IntFlag

    * Option

    * Autres

  * Quand utiliser "__new__()" ou "__init__()"

  * Exemples intéressants

    * Omettre les valeurs

      * Avec "auto"

      * Avec "object"

      * Avec une chaîne de caractères de description

      * Avec une méthode ad-hoc "__new__()"

    * OrderedEnum

    * DuplicateFreeEnum

    * Planet

    * TimePeriod

  * En quoi les *Enums* sont différentes ?

    * Classes *Enum*

    * Membres d'Enum (c.-à-d. instances)

    * Aspects approfondis

      * Noms de la forme "__dunder__" disponibles

      * Noms de la forme "_sunder_" disponibles

      * Type des membres de "Enum"

      * Valeur booléenne des classes "Enum" et de leurs membres

      * Classes "Enum" avec des méthodes

      * Combinaison de membres de "Flag"
