# MemoryView 객체

`memoryview` 객체는 C 수준 버퍼 인터페이스를 다른 객체와 마찬가지로 전달될 수 있는 파이썬 객체로 노출합니다.

PyObject *PyMemoryView_FromObject(PyObject *obj)
  반환값: 새 참조. Part of the 안정 ABI.

  버퍼 인터페이스를 제공하는 객체에서 memoryview 객체를 만듭니다. obj가 쓰기 가능한 버퍼 제공을 지원하면, memoryview 객체는 읽기/쓰기가 되고, 그렇지 않으면 읽기 전용이거나 제공자의 재량에 따라 읽기/쓰기가 될 수 있습니다.

PyBUF_READ

  읽기 전용 버퍼를 요청하는 플래그

PyBUF_WRITE

  쓰기 가능한 버퍼를 요청하는 플래그

PyObject *PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)
  반환값: 새 참조. Part of the 안정 ABI 버전 3.7 이후로.

  mem를 하부 버퍼로 사용하여 memoryview 객체를 만듭니다. flags는 `PyBUF_READ` 나 `PyBUF_WRITE` 중 하나일 수 있습니다.

  버전 3.3에 추가.

PyObject *PyMemoryView_FromBuffer(const Py_buffer *view)
  반환값: 새 참조. Part of the 안정 ABI 버전 3.11 이후로.

  주어진 버퍼 구조체 view를 감싸는 memoryview 객체를 만듭니다. 간단한 바이트 버퍼의 경우는, `PyMemoryView_FromMemory()`가 선호되는 함수입니다.

PyObject *PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char order)
  반환값: 새 참조. Part of the 안정 ABI.

  버퍼 인터페이스를 정의하는 객체로부터 메모리의 연속 청크(‘C’ 나 ‘F’ortran order로)로 memoryview 객체를 만듭니다. 메모리가 연속적이면 memoryview 객체는 원래 메모리를 가리킵니다. 그렇지 않으면, 복사본이 만들어지고 memoryview는 새 바이트열 객체를 가리킵니다.

  buffertype은 `PyBUF_READ` 나 `PyBUF_WRITE` 중 하나일 수 있습니다.

int PyMemoryView_Check(PyObject *obj)

  객체 obj가 memoryview 객체면 참을 반환합니다. 현재는 `memoryview`의 서브 클래스를 만들 수 없습니다. 이 함수는 항상 성공합니다.

Py_buffer *PyMemoryView_GET_BUFFER(PyObject *mview)

  제공자 버퍼의 memoryview의 비공개 복사본의 포인터를 돌려줍니다. mview는 반드시 memoryview 인스턴스여야 합니다; 이 매크로는 형을 확인하지 않으므로 직접 검사해야 합니다, 그렇지 않으면 충돌 위험이 있습니다.

PyObject *PyMemoryView_GET_BASE(PyObject *mview)

  memoryview가 기반으로 하는 제공자 객체에 대한 포인터나 memoryview가 `PyMemoryView_FromMemory()` 나 `PyMemoryView_FromBuffer()` 함수 중 하나로 만들어졌으면 `NULL`을 반환합니다. mview는 반드시 memoryview 인스턴스여야 합니다.