# 8. 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, synchronized queues, and sets.

Python also provides some built-in data types, in particular, `dict`, `list`, `set` (which along with `frozenset`, replaces the deprecated `sets` module), and `tuple`. The `str` class can be used to handle binary data and 8-bit text, and the `unicode` class to handle Unicode text.

The following modules are documented in this chapter:

- 8.1. `datetime` — Basic date and time types
  - 8.1.1. Available Types
  - 8.1.2. `timedelta` Objects
  - 8.1.3. `date` Objects
  - 8.1.4. `datetime` Objects
  - 8.1.5. `time` Objects
  - 8.1.6. `tzinfo` Objects
  - 8.1.7. `strftime()` and `strptime()` Behavior
- 8.2. `calendar` — General calendar-related functions
- 8.3. `collections` — High-performance container datatypes
  - 8.3.1. `Counter` objects
  - 8.3.2. `deque` objects
    - 8.3.2.1. `deque` Recipes
  - 8.3.3. `defaultdict` objects
    - 8.3.3.1. `defaultdict` Examples
  - 8.3.4. `namedtuple()` Factory Function for Tuples with Named Fields
  - 8.3.5. `OrderedDict` objects
    - 8.3.5.1. `OrderedDict` Examples and Recipes
  - 8.3.6. Collections Abstract Base Classes
- 8.4. `heapq` — Heap queue algorithm
  - 8.4.1. Basic Examples
  - 8.4.2. Priority Queue Implementation Notes
  - 8.4.3. Theory
- 8.5. `bisect` — Array bisection algorithm
  - 8.5.1. Searching Sorted Lists
  - 8.5.2. Other Examples
- 8.6. `array` — Efficient arrays of numeric values
- 8.7. `sets` — Unordered collections of unique elements
  - 8.7.1. Set Objects
  - 8.7.2. Example
  - 8.7.3. Protocol for automatic conversion to immutable
  - 8.7.4. Comparison to the built-in `set` types
- 8.8. `sched` — Event scheduler
  - 8.8.1. Scheduler Objects
- 8.9. `mutex` — Mutual exclusion support
  - 8.9.1. Mutex Objects
- 8.10. `Queue` — A synchronized queue class
  - 8.10.1. Queue Objects
- 8.11. `weakref` — Weak references
  - 8.11.1. Weak Reference Objects
  - 8.11.2. Example
- 8.12. `UserDict` — Class wrapper for dictionary objects
- 8.13. `UserList` — Class wrapper for list objects
- 8.14. `UserString` — Class wrapper for string objects
- 8.15. `types` — Names for built-in types
- 8.16. `new` — Creation of runtime internal objects
- 8.17. `copy` — Shallow and deep copy operations
- 8.18. `pprint` — Data pretty printer
  - 8.18.1. PrettyPrinter Objects
  - 8.18.2. pprint Example
- 8.19. `repr` — Alternate `repr()` implementation
  - 8.19.1. Repr Objects
  - 8.19.2. Subclassing Repr Objects