Función Python memoryview()

Python3 内置函数Funciones integradas de Python3


memoryview()Es una función integrada de Python que se utiliza para crear vistas de memoria.

memoryview devuelve un objeto "vista de memoria" que permite al código de Python acceder al búfer de datos interno del objeto sin necesidad de copiar los datos. Esto puede mejorar el rendimiento al manejar grandes datos binarios.

Definición de la palabra: memoryviewSignifica "vista de memoria" y es un objeto que accede al búfer de datos.


Sintaxis básica y parámetros

Formato de sintaxis

memoryview(obj)

Descripción de parámetros

  • Parámetro obj:
    • Tipo: objeto que implementa el protocolo de búfer (como bytes, bytearray)
    • Descripción: el objeto del que se desea crear la vista de memoria.

Descripción de la función

  • Valor de retorno: Devuelve un objeto memoryview.
  • Características: Permite acceder directamente a los datos internos del objeto, sin necesidad de copiarlos.

Ejemplos

Ejemplo 1: Crear un memoryview

Ejemplo

# Crear desde bytearray
data = bytearray(b"Hello")
m = memoryview(data)
print(m)          # Salida: <memory at 0x...>

# Crear desde bytes
data = b"World"
m = memoryview(data)
print(m[0])       # Salida: 87 (código ASCII de W)

# Acceder a múltiples bytes
print(m[0:3])     # Salida: <memory at 0x...>

Resultado esperado de la ejecución:

<memory at 0x104174c40>
87
<memory at 0x104174c40>

Análisis del código:

  1. memoryview se puede crear a partir de bytes o bytearray.
  2. Admite operaciones de indexación y slicing.

Ejemplo 2: Modificar datos (solo para objetos mutables)

Ejemplo

# memoryview puede modificar directamente los datos subyacentes
data = bytearray(b"Hello")
m = memoryview(data)

# Modificar los datos subyacentes
m[0] = 74  # 'J'
print(data)  # Salida: bytearray(b'Jello')

# Modificación mediante slicing
m[1:5] = b"abcd"
print(data)  # Salida: bytearray(b'Jabcd')

# Formato de tipo C
data = b"\x01\x02\x03\x04"
m = memoryview(data)
print(m.tobytes())  # Salida: b'\x01\x02\x03\x04'

Resultado esperado de la ejecución:

bytearray(b'Jello')
bytearray(b'Jabcd')
b'\x01\x02\x03\x04'

memoryview permite modificar directamente los datos subyacentes, lo cual es muy eficiente para manejar grandes datos binarios.


Python3 内置函数Funciones integradas de Python3


Otras extensiones