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

memoryview.md

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

1> **Источник:** https://python-all.ru/3.3/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.3/library/stdtypes.html#memoryview) предоставляет [*интерфейс буфера на уровне C*](https://python-all.ru/3.3/c-api/buffer.html#bufferobjects) в виде объекта Python, который можно передавать как любой другой объект.1011#### `PyObject *PyMemoryView_FromObject(PyObject *obj)`1213Создаёт объект memoryview из объекта, предоставляющего буферный интерфейс. Если *obj* поддерживает экспорт буфера с возможностью записи, объект memoryview будет доступен для чтения и записи; в противном случае он может быть только для чтения или для чтения и записи на усмотрение экспортёра.1415#### `PyObject *PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)`1617Создаёт объект memoryview, используя *mem* в качестве базового буфера. Параметр *flags* может быть одним из `PyBUF_READ` или `PyBUF_WRITE`.1819Новое в версии 3.3.2021#### `PyObject *PyMemoryView_FromBuffer(Py_buffer *view)`2223Создаёт объект memoryview, оборачивающий заданную структуру буфера *view*. Для простых байтовых буферов рекомендуется использовать [`PyMemoryView_FromMemory()`](https://python-all.ru/3.3/c-api/memoryview.html#PyMemoryView_FromMemory).2425#### `PyObject *PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char order)`2627Создаёт объект memoryview для непрерывного участка памяти (в порядке ‘C’ или ‘Фортран’ *order*) из объекта, определяющего буферный интерфейс. Если память непрерывна, объект memoryview указывает на исходную память. В противном случае создаётся копия, и memoryview указывает на новый объект bytes.2829#### `int PyMemoryView_Check(PyObject *obj)`3031Возвращает истину, если объект *obj* является объектом memoryview. В настоящее время не разрешается создавать подклассы [`memoryview`](https://python-all.ru/3.3/library/stdtypes.html#memoryview).3233#### `Py_buffer *PyMemoryView_GET_BUFFER(PyObject *mview)`3435Возвращает указатель на приватную копию буфера экспортёра, хранящуюся в memoryview. *mview* **должен** быть экземпляром memoryview; этот макрос не проверяет его тип, вы должны сделать это самостоятельно, иначе рискуете получить аварийное завершение.3637#### `Py_buffer *PyMemoryView_GET_BASE(PyObject *mview)`3839Возвращает указатель на экспортирующий объект, на котором основан memoryview, или *NULL*, если memoryview был создан одной из функций [`PyMemoryView_FromMemory()`](https://python-all.ru/3.3/c-api/memoryview.html#PyMemoryView_FromMemory) или [`PyMemoryView_FromBuffer()`](https://python-all.ru/3.3/c-api/memoryview.html#PyMemoryView_FromBuffer). *mview* **должен** быть экземпляром memoryview.40