Python memoryview() Funktion
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...>
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:
- memoryview kann aus bytes oder bytearray erstellt werden.
- 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'
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 integrierte Funktionen
Andere Erweiterungen