# 具體物件層

此章節列出的函式僅能接受某些特定的 Python 物件型別，將錯誤型別的物件傳遞給它們並不是什麼好事，如果你從 Python 程式當中接收到一個不確定是否為正確型別的物件，那麼請一定要先做型別檢查。例如使用 `PyDict_Check()` 來確認一個物件是否為字典。本章結構類似於 Python 物件型別的"族譜圖 (family tree)"。

警告

雖然本章所述之函式仔細地檢查了傳入物件的型別，但大多並無檢查是否為 `NULL`。允許 `NULL` 的傳入可能造成記憶體的不合法存取和直譯器的立即中止。

## 基礎物件

此段落描述 Python 型別物件與單例 (singleton) 物件 `None`。

- 型別物件
  - Creating Heap-Allocated Types
- `None` 物件

## 數值物件

- 整數物件
  - Export API
  - PyLongWriter API
- Boolean（布林）物件
- 浮點數（Floating-Point）物件
  - Pack and Unpack functions
    - Pack functions
    - Unpack functions
- 複數物件
  - 作為 C 結構的複數

## 序列物件

序列物件的一般操作在前一章節討論過了；此段落將討論 Python 語言特有的特定型別序列物件。

- 位元組物件 (Bytes Objects)
- PyBytesWriter
  - Create, Finish, Discard
  - High-level API
  - Getters
  - Low-level API
- 位元組陣列物件 (Byte Array Objects)
  - 型別檢查巨集
  - 直接 API 函式
  - 巨集
- Unicode 物件與編解碼器
  - Unicode 物件
    - Unicode 型別
    - Unicode Character Properties
    - Creating and accessing Unicode strings
    - Locale Encoding
    - 檔案系統編碼
    - wchar_t 支援
  - 內建編解碼器
    - 泛用編解碼器
    - UTF-8 編解碼器
    - UTF-32 編解碼器
    - UTF-16 編解碼器
    - UTF-7 編解碼器
    - Unicode-Escape Codecs
    - Raw-Unicode-Escape Codecs
    - Latin-1 編解碼器
    - ASCII 編解碼器
    - Character Map Codecs
    - Windows 的 MBCS 編解碼器
  - Methods and Slot Functions
  - PyUnicodeWriter
  - 已棄用的 API
- Tuple（元組）物件
- Struct Sequence Objects
- List（串列）物件

## 容器物件

- 字典物件
- 集合物件

## 函式物件

- 函式物件 (Function Objects)
- 實例方法物件 (Instance Method Objects)
- 方法物件 (Method Objects)
- Cell 物件
- 程式碼物件
- 程式碼物件旗標
- 額外資訊

## 其他物件

- 檔案物件 (File Objects)
- 模組物件
- 模組定義
  - 模組槽 (Module slots)
- Creating extension modules dynamically
- 支援的函式
  - Module lookup (single-phase initialization)
- 疊代器（Iterator）物件
- Descriptor（描述器）物件
- 切片物件
  - Ellipsis 物件
- MemoryView 物件
- 弱參照物件
- Capsules
- Frame 物件
  - Frame Locals Proxies
  - Internal Frames
- 產生器 (Generator) 物件
- Coroutine（協程）物件
- 情境變數物件（Context Variables Objects）
- DateTime 物件
- 型別提示物件