# 具体的对象层

本章中的函数特定于某些 Python 对象类型。将错误类型的对象传递给它们并不是一个好主意；如果您从 Python 程序接收到一个对象，但不确定它是否具有正确的类型，则必须首先执行类型检查；例如，要检查对象是否为字典，请使用 `PyDict_Check()`。本章的结构类似于 Python 对象类型的“家族树”。

警告

虽然本章所描述的函数会仔细检查传入对象的类型，但是其中许多函数不会检查传入的对象是否为 `NULL`。允许传入 `NULL` 可能导致内存访问冲突和解释器的立即终止。

## 基本对象

本节描述 Python 类型对象和单例对象 `None`。

- 类型对象
  - 创建堆分配类型
    - 类型槽位 ID
  - Soft-deprecated API
- `None` 对象

## 数值对象

- 整数型对象
  - 导出 API
  - PyLongWriter API
  - 已弃用的 API
- 布尔对象
- 浮点数对象
  - 打包与解包函数
    - 打包函数
    - 解包函数
- 复数对象
  - 表示复数的 C 结构体

## 序列对象

序列对象的一般操作在前一章中讨论过;本节介绍 Python 语言固有的特定类型的序列对象。

- bytes 对象
- PyBytesWriter
  - Create, Finish, Discard
  - 高阶 API
  - Getters
  - 底层级 API
- 字节数组对象
  - 类型检查宏
  - 直接 API 函数
  - 宏
- Unicode 对象和编解码器
  - Unicode 对象
    - Unicode 类型
    - Unicode 字符属性
    - 创建和访问 Unicode 字符串
    - 语言区域编码格式
    - 文件系统编码格式
    - wchar_t 支持
  - 内置编解码器
    - 泛型编解码器
    - UTF-8 编解码器
    - UTF-32 编解码器
    - UTF-16 编解码器
    - UTF-7 编解码器
    - Unicode-Escape 编解码器
    - Raw-Unicode-Escape 编解码器
    - Latin-1 编解码器
    - ASCII 编解码器
    - 字符映射编解码器
    - Windows 中的 MBCS 编解码器
  - 方法与槽位函数
  - PyUnicodeWriter
  - 已弃用的 API
- 元组对象
- 结构序列对象
- 列表对象

## 容器对象

- 字典对象
  - 字典视图对象
  - Frozen dictionary objects
  - Ordered dictionaries
- 集合对象
  - 已弃用的 API

## 函数对象

- Function 对象
- 实例方法对象
- 方法对象
- Cell 对象
- 代码对象
- 代码对象标志
- 附加信息

## 其他对象

- File objects
  - Soft-deprecated API
- 模块对象
  - 模块定义
    - Metadata slots
    - Feature slots
    - Creation and initialization slots
  - Module state
    - Slots for defining module state
    - Module token
  - 动态创建扩展模块
  - Module definition struct
  - 支持函数
    - 模块查找（单阶段初始化）
- 迭代器对象
  - Range 对象
  - 内置迭代器类型
  - 其他迭代器对象
- 描述器对象
  - 内置描述器
- 切片对象
  - Ellipsis 对象
- MemoryView 对象
- PickleBuffer 对象
- 弱引用对象
- Capsule 对象
- Sentinel objects
- 帧对象
  - Frame locals proxies
  - Legacy local variable APIs
  - Internal frames
- 生成器对象
  - 异步生成器对象
  - 已弃用的 API
- 协程对象
- 上下文变量对象
- 类型注解对象

## 针对扩展模块的 C API

- Curses C API
- 内部数据
- DateTime 对象
- 内部数据