# Concrete Objects Layer

The functions in this chapter are specific to certain Python object types. Passing them an object of the wrong type is not a good idea; if you receive an object from a Python program and you are not sure that it has the right type, you must perform a type check first; for example, to check that an object is a dictionary, use `PyDict_Check()`. The chapter is structured like the "family tree" of Python object types.

警告

While the functions described in this chapter carefully check the type of the objects which are passed in, many of them do not check for NULL being passed instead of a valid object. Allowing NULL to be passed in can cause memory access violations and immediate termination of the interpreter.

## 基本对象

This section describes Python type objects and the singleton object `None`.

- Type 对象
- `None` 对象

## Numeric Objects

- 整数型对象
- 布尔对象
- 浮点数对象
- 复数对象
  - 表示复数的C结构体
  - 表示复数的Python对象

## 序列对象

Generic operations on sequence objects were discussed in the previous chapter; this section deals with the specific kinds of sequence objects that are intrinsic to the Python language.

- 字节对象
- 字节数组对象
  - 类型检查宏
  - 直接 API 函数
  - 宏
- Unicode Objects and Codecs
  - Unicode对象
    - Unicode类型
    - Unicode字符属性
    - Creating and accessing Unicode strings
    - Deprecated Py_UNICODE APIs
    - Locale Encoding
    - File System Encoding
    - wchar_t Support
  - Built-in Codecs
    - Generic Codecs
    - UTF-8 Codecs
    - UTF-32 Codecs
    - UTF-16 Codecs
    - UTF-7 Codecs
    - Unicode-Escape Codecs
    - Raw-Unicode-Escape Codecs
    - Latin-1 Codecs
    - ASCII Codecs
    - Character Map Codecs
    - MBCS codecs for Windows
    - Methods & Slots
  - Methods and Slot Functions
- 元组对象
- Struct Sequence Objects
- 列表对象

## 容器对象

- 字典对象
- 集合对象

## 函数对象

- 函数对象
- 实例方法对象
- 方法对象
- Cell 对象
- 代码对象

## 其他对象

- 文件对象
- Module Objects
  - Initializing C modules
    - Single-phase initialization
    - Multi-phase initialization
    - Low-level module creation functions
    - Support functions
  - Module lookup
- 迭代器对象
- 描述符对象
- 切片对象
- Ellipsis Object
- MemoryView 对象
- 弱引用对象
- 胶囊
- 生成器对象
- 协程对象
- Context Variables Objects
- DateTime 对象