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

本章所描述的模块提供了许多专门的数据类型，如日期和时间、固定类型的数组
、堆队列、双端队列、以及枚举。

Python也提供一些内置数据类型，特别是，"dict"、 "list"、"set"、
"frozenset"、以及 "tuple"。"str" 这个类是用来存储Unicode字符串的，而
"bytes" 和 "bytearray" 这两个类是用来存储二进制数据的。

The following modules are documented in this chapter:

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

  * Aware and Naive Objects

  * 常量

  * Available Types

    * Common Properties

    * Determining if an Object is Aware or Naive

  * "timedelta" Objects

    * class:*timedelta* 用法示例

  * "date" Objects

    * class:*date* 用法示例

  * "datetime" Objects

    * Examples of Usage: "datetime"

  * "time" Objects

    * Examples of Usage: "time"

  * "tzinfo" Objects

  * "timezone" Objects

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

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

    * 技术细节

* "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

  * 何时使用 "__new__()" 与 "__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"
