データ型
********

この章で解説されるモジュールは日付や時間、型が固定された配列、ヒープキ
ュー、両端キュー、列挙型のような種々の特殊なデータ型を提供します。

Python にはその他にもいくつかの組み込みデータ型があります。特に、
"dict" 、 "list" 、 "set" 、 "frozenset" 、そして "tuple" があります。
"str" クラスは Unicode データを扱うことができ、 "bytes" と "bytearray"
クラスはバイナリデータを扱うことができます。

この章では以下のモジュールが記述されています:

* "datetime" --- 基本的な日付型および時間型

  * Aware オブジェクトと Naive オブジェクト

  * 定数

  * 利用可能なデータ型

    * 共通の特徴

    * オブジェクトが Aware なのか Naive なのかの判断

  * "timedelta" オブジェクト

    * 使用例: "timedelta"

  * "date" オブジェクト

    * 使用例: "date"

  * "datetime" オブジェクト

    * 使用例: "datetime"

  * "time" オブジェクト

    * 使用例: "time"

  * "tzinfo" オブジェクト

  * "timezone" オブジェクト

  * "strftime()" と "strptime()" の振る舞い

    * "strftime()" と "strptime()" の書式コード

    * 技術詳細

* "zoneinfo" --- IANA タイムゾーンのサポート

  * "ZoneInfo" を使用する

  * データソース

    * Configuring the data sources

      * Compile-time configuration

      * Environment configuration

      * Runtime configuration

  * "ZoneInfo" クラス

    * 文字列表現

    * Pickle serialization

  * 関数

  * Globals

  * 例外と警告

* "calendar" --- 一般的なカレンダーに関する関数群

* "collections" --- コンテナデータ型

  * "ChainMap" オブジェクト

    * "ChainMap" の例とレシピ

  * "Counter" オブジェクト

  * "deque" オブジェクト

    * "deque" のレシピ

  * "defaultdict" オブジェクト

    * "defaultdict" の使用例

  * "namedtuple()" 名前付きフィールドを持つタプルのファクトリ関数

  * "OrderedDict" オブジェクト

    * "OrderedDict" の例とレシピ

  * "UserDict" オブジェクト

  * "UserList" オブジェクト

  * "UserString" オブジェクト

* "collections.abc" --- コレクションの抽象基底クラス

  * コレクション抽象基底クラス

  * コレクションの抽象基底クラス -- 詳細な説明

  * 例とレシピ

* "heapq" --- ヒープキューアルゴリズム

  * 基本的な例

  * 優先度キュー実装の注釈

  * 理論

* "bisect" --- 配列二分法アルゴリズム

  * パフォーマンスに関するメモ

  * ソート済みリストの探索

  * 使用例

* "array" --- 効率のよい数値アレイ

* "weakref" --- 弱参照

  * 弱参照オブジェクト

  * 使用例

  * ファイナライザオブジェクト

  * ファイナライザと "__del__()" メソッドとの比較

* "types" --- 動的な型生成と組み込み型に対する名前

  * 動的な型生成

  * 標準的なインタプリタ型

  * 追加のユーティリティクラスと関数

  * コルーチンユーティリティ関数

* "copy" --- 浅いコピーおよび深いコピー操作

* "pprint" --- データ出力の整然化

  * PrettyPrinter オブジェクト

  * 使用例

* "reprlib" --- もう一つの "repr()" の実装

  * Reprオブジェクト

  * Reprオブジェクトをサブクラス化する

* "enum" --- 列挙型のサポート

  * モジュールコンテンツ

  * Enum の作成

  * 列挙型メンバーおよびそれらの属性へのプログラム的アクセス

  * 列挙型メンバーと値の重複

  * 番号付けの値が一意であることの確認

  * 値の自動設定を使う

  * イテレーション

  * 比較

  * 列挙型で許されるメンバーと属性

  * Enumのサブクラス化の制限

  * Pickle 化

  * 関数 API

  * 派生列挙型

    * IntEnum

    * IntFlag

    * Flag

    * その他

  * "__new__()" と "__init__()" のどちらを使うべきか

  * 興味深い例

    * 値の省略

      * "auto" を使う

      * "object" を使う

      * 解説文字列を使う

      * 独自の "__new__()" を使う

    * OrderedEnum

    * DuplicateFreeEnum

    * Planet

    * TimePeriod

  * Enum はどう違うのか?

    * Enum クラス

    * Enum メンバー (インスタンス)

    * 細かい点

      * "__dunder__" 名のサポート

      * "_sunder_" 名のサポート

      * _Private__names

      * "Enum" メンバー型

      * "Enum" クラスとメンバーの真偽値

      * メソッド付きの "Enum" クラス

      * "Flag" のメンバーの組み合わせ

* "graphlib" --- Functionality to operate with graph-like structures

  * 例外
