Python memoryview() Funktion

Python3 内置函数Python3 integrierte Funktionen


memoryview()Es ist eine in Python integrierte Funktion, die zum Erstellen einer Speicheransicht verwendet wird.

memoryview gibt ein "memory view"-Objekt zurück, das es Python-Code ermöglicht, auf den internen Datenpuffer eines Objekts zuzugreifen, ohne die Daten zu kopieren. Dies kann die Leistung bei der Verarbeitung großer binärer Daten verbessern.

Wortdefinition: memoryviewEs bedeutet "memory view", ein Objekt, das auf einen Datenpuffer zugreift.


Grundlegende Syntax und Parameter

Syntaxformat

memoryview(obj)

Parameterbeschreibung

  • Parameter obj:
    • Typ: Ein Objekt, das das Pufferprotokoll implementiert (wie bytes, bytearray)
    • Beschreibung: Das Objekt, für das eine Speicheransicht erstellt werden soll.

Funktionsbeschreibung

  • Rückgabewert: Gibt ein memoryview-Objekt zurück.
  • Merkmale: Ermöglicht direkten Zugriff auf die Daten innerhalb des Objekts ohne Kopieren.

Beispiele

Beispiel 1: memoryview erstellen

Beispiel

# Aus bytearray erstellen
data = bytearray(b"Hello")
m = memoryview(data)
print(m)          # Ausgabe: <memory at 0x...>

# Aus bytes erstellen
data = b"World"
m = memoryview(data)
print(m[0])       # Ausgabe: 87 (ASCII-Code von W)

# Zugriff auf mehrere Bytes
print(m[0:3])     # Ausgabe: <memory at 0x...>

Erwartete Ausgabe:

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

Code-Erklärung:

  1. memoryview kann aus bytes oder bytearray erstellt werden.
  2. Es unterstützt Indexierungs- und Slicing-Operationen.

Beispiel 2: Daten ändern (nur veränderbare Objekte)

Beispiel

# memoryview kann die zugrunde liegenden Daten direkt ändern
data = bytearray(b"Hello")
m = memoryview(data)

# Die zugrunde liegenden Daten ändern
m[0] = 74  # 'J'
print(data)  # Ausgabe: bytearray(b'Jello')

# Durch Slicing ändern
m[1:5] = b"abcd"
print(data)  # Ausgabe: bytearray(b'Jabcd')

# C-Typ-Format
data = b"\x01\x02\x03\x04"
m = memoryview(data)
print(m.tobytes())  # Ausgabe: b'\x01\x02\x03\x04'

Erwartete Ausgabe:

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

memoryview ermöglicht die direkte Veränderung der zugrunde liegenden Daten, was bei der Verarbeitung großer binärer Daten sehr effizient ist.


Python3 内置函数Python3 integrierte Funktionen


Andere Erweiterungen