映射协议

另请参阅 PyObject_GetItem() , PyObject_SetItem() and PyObject_DelItem() .

int PyMapping_Check ( PyObject * o )
属于 稳定 ABI (应用程序二进制接口) .

返回 1 if the object provides the mapping protocol or supports slicing, and 0 otherwise. Note that it returns 1 for Python classes with a __getitem__() method, since in general it is impossible to determine what type of keys the class supports. This function always succeeds.

Py_ssize_t PyMapping_Size ( PyObject * o )
Py_ssize_t PyMapping_Length ( PyObject * o )
属于 稳定 ABI (应用程序二进制接口) .

Returns the number of keys in object o on success, and -1 on failure. This is equivalent to the Python expression len(o) .

PyObject * PyMapping_GetItemString ( PyObject * o , const char * key )
返回值:新引用。 属于 稳定 ABI (应用程序二进制接口) .

这如同 PyObject_GetItem() ,但 key is specified as a const char * UTF-8 encoded bytes string, rather than a PyObject * .

int PyMapping_GetOptionalItem ( PyObject * obj , PyObject * key , PyObject * * result )
属于 稳定 ABI (应用程序二进制接口) since version 3.13.

Variant of PyObject_GetItem() which doesn’t raise KeyError if the key is not found.

If the key is found, return 1 并设置 *result to a new 强引用 to the corresponding value. If the key is not found, return 0 并设置 *result to NULL KeyError is silenced. If an error other than KeyError is raised, return -1 并设置 *result to NULL .

3.13 版添加。