映射协议 — Python 文档
来自菜鸟教程
Python/docs/3.8/c-api/mapping
映射协议
另见 PyObject_GetItem()、PyObject_SetItem() 和 PyObject_DelItem()。
- int PyMapping_Check(PyObject *o)
- 如果对象提供映射协议或支持切片,则返回
1
,否则返回0
。 请注意,它使用__getitem__()
方法为 Python 类返回1
,因为在一般情况下无法确定它支持什么类型的键。 此功能总是成功。
- Py_ssize_t PyMapping_Size(PyObject *o)
Py_ssize_t PyMapping_Length(PyObject *o)
- 成功时返回对象 o 中的键数,失败时返回
-1
。 这相当于 Python 表达式len(o)
。
- 失败时返回对应于字符串 key 或
NULL
的 o 的元素。 这相当于 Python 表达式o[key]
。 另见 PyObject_GetItem()。
- 将字符串 key 映射到对象 o 中的值 v。 失败时返回
-1
。 这相当于 Python 语句o[key] = v
。 另见 PyObject_SetItem()。 此函数 不会 窃取对 v 的引用。
- 从对象 o 中删除对象 key 的映射。 失败时返回
-1
。 这相当于 Python 语句del o[key]
。 这是 PyObject_DelItem() 的别名。
- int PyMapping_DelItemString(PyObject *o, const char *key)
- 从对象 o 中删除字符串 key 的映射。 失败时返回
-1
。 这相当于 Python 语句del o[key]
。
- int PyMapping_HasKey(PyObject *o, PyObject *key)
如果映射对象具有 key 键,则返回
1
,否则返回0
。 这相当于 Python 表达式key in o
。 此功能总是成功。请注意,调用
__getitem__()
方法时发生的异常将被抑制。 要获得错误报告,请改用 PyObject_GetItem()。
- int PyMapping_HasKeyString(PyObject *o, const char *key)
如果映射对象具有 key 键,则返回
1
,否则返回0
。 这相当于 Python 表达式key in o
。 此功能总是成功。请注意,调用
__getitem__()
方法和创建临时字符串对象时发生的异常将被抑制。 要获得错误报告,请改用 PyMapping_GetItemString()。
- PyObject *PyMapping_Items(PyObject *o)
成功时,返回对象 o 中的项目列表,其中每个项目是一个包含键值对的元组。 失败时,返回
NULL
。3.7 版更改: 以前,该函数返回列表或元组。