mapping.md
1> **Источник:** https://python-all.ru/3.7/c-api/mapping.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Протокол отображения89См. также [`PyObject_GetItem()`](https://python-all.ru/3.7/c-api/object.html#c.PyObject_GetItem), [`PyObject_SetItem()`](https://python-all.ru/3.7/c-api/object.html#c.PyObject_SetItem) и [`PyObject_DelItem()`](https://python-all.ru/3.7/c-api/object.html#c.PyObject_DelItem).1011#### `int PyMapping_Check(PyObject *o)`1213Возвращает `1`, если объект предоставляет протокол отображений или поддерживает срезы, и `0` в противном случае. Обратите внимание, что возвращается `1` для классов Python с методом [`__getitem__()`](https://python-all.ru/3.7/reference/datamodel.html#object.__getitem__), так как в общем случае невозможно определить, какой тип ключей он поддерживает. Эта функция всегда завершается успешно.1415#### `Py_ssize_t PyMapping_Size(PyObject *o)`1617#### `Py_ssize_t PyMapping_Length(PyObject *o)`1819В случае успеха возвращает количество ключей в объекте *o*, а в случае ошибки – `-1`. Это эквивалентно выражению Python `len(o)`.2021#### `PyObject* PyMapping_GetItemString(PyObject *o, const char *key)`2223*Возвращаемое значение: новая ссылка.*2425Возвращает элемент *o*, соответствующий строке *key*, или `NULL` при ошибке. Это эквивалент выражения Python `o[key]`. См. также [`PyObject_GetItem()`](https://python-all.ru/3.7/c-api/object.html#c.PyObject_GetItem).2627#### `int PyMapping_SetItemString(PyObject *o, const char *key, PyObject *v)`2829Сопоставляет строку *ключ* со значением *v* в объекте *o*. Возвращает `-1` в случае неудачи. Это эквивалент выражения Python `o[key] = v`. См. также [`PyObject_SetItem()`](https://python-all.ru/3.7/c-api/object.html#c.PyObject_SetItem).3031#### `int PyMapping_DelItem(PyObject *o, PyObject *key)`3233Удаляет отображение для объекта *key* из объекта *o*. Возвращает `-1` при ошибке. Это эквивалентно оператору Python `del o[key]`. Это псевдоним [`PyObject_DelItem()`](https://python-all.ru/3.7/c-api/object.html#c.PyObject_DelItem).3435#### `int PyMapping_DelItemString(PyObject *o, const char *key)`3637Удаляет отображение для строки *key* из объекта *o*. Возвращает `-1` при ошибке. Это эквивалентно оператору Python `del o[key]`.3839#### `int PyMapping_HasKey(PyObject *o, PyObject *key)`4041Возвращает `1`, если объект отображения имеет ключ *key*, и `0` в противном случае. Это эквивалентно выражению Python `key in o`. Эта функция всегда завершается успешно.4243Обратите внимание, что исключения, возникающие при вызове метода [`__getitem__()`](https://python-all.ru/3.7/reference/datamodel.html#object.__getitem__), подавляются. Для получения сообщений об ошибках используйте [`PyObject_GetItem()`](https://python-all.ru/3.7/c-api/object.html#c.PyObject_GetItem).4445#### `int PyMapping_HasKeyString(PyObject *o, const char *key)`4647Возвращает `1`, если объект отображения имеет ключ *key*, и `0` в противном случае. Это эквивалентно выражению Python `key in o`. Эта функция всегда завершается успешно.4849Обратите внимание, что исключения, возникающие при вызове метода [`__getitem__()`](https://python-all.ru/3.7/reference/datamodel.html#object.__getitem__) и создании временного строкового объекта, будут подавлены. Для получения сообщений об ошибках используйте [`PyMapping_GetItemString()`](https://python-all.ru/3.7/c-api/mapping.html#c.PyMapping_GetItemString).5051#### `PyObject* PyMapping_Keys(PyObject *o)`5253*Возвращаемое значение: новая ссылка.*5455В случае успеха возвращает список ключей в объекте *o*. В случае ошибки возвращает `NULL`.5657Изменено в версии 3.7: Ранее функция возвращала список или кортеж.5859#### `PyObject* PyMapping_Values(PyObject *o)`6061*Возвращаемое значение: новая ссылка.*6263В случае успеха возвращает список значений в объекте *o*. В случае ошибки возвращает `NULL`.6465Изменено в версии 3.7: Ранее функция возвращала список или кортеж.6667#### `PyObject* PyMapping_Items(PyObject *o)`6869*Возвращаемое значение: новая ссылка.*7071В случае успеха возвращает список элементов объекта *o*, где каждый элемент – это кортеж, содержащий пару ключ-значение. В случае неудачи возвращает `NULL`.7273Изменено в версии 3.7: Ранее функция возвращала список или кортеж.74