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

memoryview.md

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

1> **Источник:** https://python-all.ru/3.14/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.14/library/stdtypes.html#memoryview) предоставляет [буферный интерфейс](https://python-all.ru/3.14/c-api/buffer.html#bufferobjects) уровня C как объект Python, который затем можно передавать как любой другой объект.1011#### `PyTypeObject PyMemoryView_Type`1213*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable).*1415Этот экземпляр [`PyTypeObject`](https://python-all.ru/3.14/c-api/type.html#c.PyTypeObject) представляет тип Python memoryview. Это тот же объект, что и [`memoryview`](https://python-all.ru/3.14/library/stdtypes.html#memoryview) в слое Python.1617#### `PyObject *PyMemoryView_FromObject(PyObject *obj)`1819*Возвращаемое значение: новая ссылка.*2021*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable).*2223Создаёт объект memoryview из объекта, предоставляющего буферный интерфейс. Если *obj* поддерживает экспорт буфера с возможностью записи, объект memoryview будет доступен для чтения и записи; в противном случае он может быть только для чтения или для чтения и записи на усмотрение экспортёра.2425#### `PyBUF_READ`2627*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable) начиная с версии 3.11.*2829Флаг для запроса буфера, доступного только для чтения.3031#### `PyBUF_WRITE`3233*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable) начиная с версии 3.11.*3435Флаг для запроса буфера с возможностью записи.3637#### `PyObject *PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)`3839*Возвращаемое значение: новая ссылка.*4041*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable) начиная с версии 3.7.*4243Создаёт объект memoryview, используя *mem* в качестве базового буфера. *flags* может быть одним из [`PyBUF_READ`](https://python-all.ru/3.14/c-api/memoryview.html#c.PyBUF_READ) или [`PyBUF_WRITE`](https://python-all.ru/3.14/c-api/memoryview.html#c.PyBUF_WRITE).4445Добавлено в версии 3.3.4647#### `PyObject *PyMemoryView_FromBuffer(const Py_buffer *view)`4849*Возвращаемое значение: новая ссылка.*5051*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable) начиная с версии 3.11.*5253Создаёт объект memoryview, обёртывающий заданную структуру буфера *view*. Для простых байтовых буферов предпочтительнее использовать функцию [`PyMemoryView_FromMemory()`](https://python-all.ru/3.14/c-api/memoryview.html#c.PyMemoryView_FromMemory).5455#### `PyObject *PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char order)`5657*Возвращаемое значение: новая ссылка.*5859*Часть [Stable ABI](https://python-all.ru/3.14/c-api/stable.html#stable).*6061Создаёт объект memoryview, указывающий на [непрерывный](https://python-all.ru/3.14/glossary.html#term-contiguous) блок памяти (в порядке ‘C’ или ‘F’ortran, *order*), из объекта, определяющего буферный интерфейс. Если память непрерывна, объект memoryview указывает на исходную память. В противном случае создаётся копия, и memoryview указывает на новый объект bytes.6263*buffertype* может быть одним из [`PyBUF_READ`](https://python-all.ru/3.14/c-api/memoryview.html#c.PyBUF_READ) или [`PyBUF_WRITE`](https://python-all.ru/3.14/c-api/memoryview.html#c.PyBUF_WRITE).6465#### `int PyMemoryView_Check(PyObject *obj)`6667Возвращает true, если объект *obj* является объектом memoryview. В настоящее время не разрешено создавать подклассы [`memoryview`](https://python-all.ru/3.14/library/stdtypes.html#memoryview). Эта функция всегда завершается успешно.6869#### `Py_buffer *PyMemoryView_GET_BUFFER(PyObject *mview)`7071Возвращает указатель на приватную копию буфера экспортёра, хранящуюся в memoryview. *mview* **должен** быть экземпляром memoryview; этот макрос не проверяет его тип, вы должны сделать это самостоятельно, иначе рискуете получить аварийное завершение.7273#### `PyObject *PyMemoryView_GET_BASE(PyObject *mview)`7475Возвращает либо указатель на экспортирующий объект, на котором основан memoryview, либо `NULL`, если memoryview был создан одной из функций [`PyMemoryView_FromMemory()`](https://python-all.ru/3.14/c-api/memoryview.html#c.PyMemoryView_FromMemory) или [`PyMemoryView_FromBuffer()`](https://python-all.ru/3.14/c-api/memoryview.html#c.PyMemoryView_FromBuffer). *mview* **должен** быть экземпляром memoryview.76