Документация Python неофициальный перевод

memoryview.md

62 строк · 3.9 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.1/c-api/memoryview.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты MemoryView89Объект [`memoryview`](https://python-all.ru/3.1/library/stdtypes.html#memoryview) предоставляет [*интерфейс буфера на уровне C*](https://python-all.ru/3.1/c-api/buffer.html#bufferobjects) в виде объекта Python, который можно передавать как любой другой объект.1011**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) \*`PyMemoryView_FromObject`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*obj*)**1213Создаёт объект memoryview из объекта, предоставляющего буферный интерфейс. Если1415*obj*1617поддерживает экспорт буфера с возможностью записи, объект memoryview будет доступен для чтения и записи, в противном случае – только для чтения.1819**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) \*`PyMemoryView_FromBuffer`([Py\_buffer](https://python-all.ru/3.1/c-api/buffer.html#Py_buffer) *\*view*)**2021Создаёт объект memoryview, оборачивающий данную буферную структуру2223*view*2425. Объект memoryview затем владеет буфером, представленным2627*view*2829, что означает, что не следует пытаться вызывать3031[`PyBuffer_Release()`](https://python-all.ru/3.1/c-api/buffer.html#PyBuffer_Release)3233самостоятельно: это будет выполнено при освобождении объекта memoryview.3435**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) \*`PyMemoryView_GetContiguous`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*obj*, int *buffertype*, char *order*)**3637Создаёт объект memoryview для непрерывного блока памяти (в порядке «C» или «Фортран»3839*order*4041) на основе объекта, определяющего буферный интерфейс. Если память непрерывна, объект memoryview указывает на исходную память. В противном случае создаётся копия, и memoryview указывает на новый объект bytes.4243**int `PyMemoryView_Check`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*obj*)**4445Возвращает истину, если объект4647*obj*4849является объектом memoryview. В настоящее время не разрешается создавать подклассы5051[`memoryview`](https://python-all.ru/3.1/library/stdtypes.html#memoryview)5253.5455**[Py\_buffer](https://python-all.ru/3.1/c-api/buffer.html#Py_buffer) \*`PyMemoryView_GET_BUFFER`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*obj*)**5657Возвращает указатель на буферную структуру, обёрнутую данным объектом memoryview. Объект5859**должен**6061быть экземпляром memoryview; этот макрос не проверяет его тип, вы должны сделать это сами, иначе рискуете получить аварийное завершение.62