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:
>>> image = bytearray([0, 127, 255, 64]) >>> mv = memoryview(image) >>> mv[0] 0 memoryview() Signature
memoryview(object) Arguments
| Argument | Description |
|---|---|
object | An object supporting the buffer protocol, such as bytes, bytearray, or array.array. |
Return Value
- Returns a
memoryviewobject, which allows for efficient access to the data without copying it.
memoryview() Examples
With a bytearray as an argument:
>>> data = bytearray(b"Hello") >>> mv = memoryview(data) >>> mv[1] = ord("a") >>> bytes(mv) b'Hallo' With a bytes object as an argument:
>>> data = bytes(b"World") >>> mv = memoryview(data) >>> mv[0] # ASCII for W 87 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:
>>> 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.
Related Resources
Tutorial
Python's Built-in Functions: A Complete Exploration
In this tutorial, you'll learn the basics of working with Python's numerous built-in functions. You'll explore how to use these predefined functions to perform common tasks and operations, such as mathematical calculations, data type conversions, and string manipulations.
For additional information on related topics, take a look at the following resources: