Data Types
**********

The modules described in this chapter provide a variety of specialized
data types such as dates and times, fixed-type arrays, heap queues,
double-ended queues, and enumerations.

Python also provides some built-in data types, in particular, "dict",
"list", "set" and "frozenset", and "tuple".  The "str" class is used
to hold Unicode strings, and the "bytes" and "bytearray" classes are
used to hold binary data.

The following modules are documented in this chapter:

* "datetime" --- Basic date and time types

  * Aware and Naive Objects

  * Constants

  * Available Types

    * Common Properties

    * Determining if an Object is Aware or Naive

  * "timedelta" Objects

    * Examples of usage: "timedelta"

  * "date" Objects

    * Examples of Usage: "date"

  * "datetime" Objects

    * Examples of Usage: "datetime"

  * "time" Objects

    * Examples of Usage: "time"

  * "tzinfo" Objects

  * "timezone" Objects

  * "strftime()" and "strptime()" Behavior

    * "strftime()" and "strptime()" Format Codes

    * Technical Detail

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

* "collections" --- 容器資料型態

  * "ChainMap" objects

    * "ChainMap" Examples and Recipes

  * "Counter" 物件

  * "deque" objects

    * "deque" Recipes

  * "defaultdict" objects

    * "defaultdict" Examples

  * "namedtuple()" Factory Function for Tuples with Named Fields

  * "OrderedDict" objects

    * "OrderedDict" Examples and Recipes

  * "UserDict" objects

  * "UserList" objects

  * "UserString" objects

* "collections.abc" --- Abstract Base Classes for Containers

  * Collections Abstract Base Classes

* "heapq" --- 堆積佇列 (heap queue) 演算法

  * 基礎範例

  * 優先佇列  (Priority Queue) 實作細節

  * 原理

* "bisect" --- 陣列二分演算法 (Array bisection algorithm)

  * Searching Sorted Lists

  * Other Examples

* "array" --- 高效率的數值型態陣列

* "weakref" --- Weak references

  * Weak Reference Objects

  * Example

  * 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" --- Shallow and deep copy operations

* "pprint" --- Data pretty printer

  * PrettyPrinter Objects

  * Example

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

  * Repr Objects

  * Subclassing Repr Objects

* "enum" --- Support for enumerations

  * Module Contents

  * Creating an Enum

  * Programmatic access to enumeration members and their attributes

  * Duplicating enum members and values

  * Ensuring unique enumeration values

  * Using automatic values

  * Iteration

  * Comparisons

  * Allowed members and attributes of enumerations

  * Restricted Enum subclassing

  * Pickling

  * Functional API

  * Derived Enumerations

    * IntEnum

    * IntFlag

    * Flag

    * Others

  * When to use "__new__()" vs. "__init__()"

  * Interesting examples

    * Omitting values

      * Using "auto"

      * Using "object"

      * Using a descriptive string

      * Using a custom "__new__()"

    * OrderedEnum

    * DuplicateFreeEnum

    * Planet

    * TimePeriod

  * How are Enums different?

    * Enum Classes

    * Enum Members (aka instances)

    * Finer Points

      * Supported "__dunder__" names

      * Supported "_sunder_" names

      * "Enum" member type

      * Boolean value of "Enum" classes and members

      * "Enum" classes with methods

      * Combining members of "Flag"
