Skip to content

memoryview()

The built-in memoryview() function provides a way to access the internal data of an object that supports the buffer protocol without copying it. It’s particularly useful for efficiently manipulating large datasets or interfacing with binary data:

Language: Python
>>> image = bytearray([0, 127, 255, 64])
>>> mv = memoryview(image)
>>> mv[0]
0

memoryview() Signature

Language: Python Syntax
memoryview(object)

Arguments

Argument Description
object An object supporting the buffer protocol, such as bytes, bytearray, or array.array.

Return Value

  • Returns a memoryview object, which allows for efficient access to the data without copying it.

Since Python 3.14, memoryview also provides .count() and .index(), which round out its collections.abc.Sequence interface. In that same release, memoryview became a generic type, so memoryview[int] is valid in annotations.

memoryview() Examples

With a bytearray as an argument:

Language: Python
>>> data = bytearray(b"Hello")
>>> mv = memoryview(data)
>>> mv[1] = ord("a")
>>> bytes(mv)
b'Hallo'

With a bytes object as an argument:

Language: Python
>>> data = bytes(b"World")
>>> mv = memoryview(data)
>>> mv[0]  # ASCII for W
87

A memoryview inherits its writability from the object it views. A view over an immutable object such as bytes is read-only, so its .readonly attribute is True and any item or slice assignment raises TypeError: cannot modify read-only memory. The bytearray view above is writable, which is why assigning to mv[1] works there.

memoryview() Common Use Cases

The most common use cases for the memoryview() function include:

  • Accessing and manipulating slices of large datasets without copying them
  • Interfacing with C extensions or libraries that require buffer protocol support
  • Performing efficient operations on binary data, like image processing or data serialization

memoryview() Real-World Example

Suppose you have a bytearray representing pixel data of an image, and you want to invert the pixel values efficiently. You can use the memoryview() function:

Language: Python
>>> image = bytearray([0, 127, 255, 64, 128, 192, 32, 96, 160])
>>> mv = memoryview(image)

>>> for i in range(len(mv)):
...     mv[i] = 255 - mv[i]
...

>>> list(mv)
[255, 128, 0, 191, 127, 63, 223, 159, 95]

In this example, the memoryview object allows you to invert the pixel values directly, reflecting the changes on the original bytearray. This approach is memory-efficient and fast because it avoids unnecessary data copying.

Python's Built-in Functions: A Complete Exploration

Tutorial

Python Built-in Functions: A Complete Guide

Use Python's built-in functions for math, data types, iterables, and I/O to write shorter, more Pythonic code.

intermediate python

For additional information on related topics, take a look at the following resources:


By Leodanis Pozo Ramos • Updated Sept. 2, 2026 • Reviewed by Dan Bader