Ein Anwendungsbeispiel:
>>> s = 'Hello world'
>>> t = buffer(s, 6, 5)
>>> t
<read-only buffer for 0x10064a4b0, size 5, offset 6 at 0x100634ab0>
>>> print t
world
Der Puffer ist in diesem Fall eine Unterzeichenfolge, die an Position 6 mit der Länge 5 beginnt, und benötigt keinen zusätzlichen Speicherplatz - er verweist auf einen Teil der Zeichenfolge.
Dies ist für solche kurzen Zeichenfolgen nicht sehr nützlich, kann jedoch bei Verwendung großer Datenmengen erforderlich sein. In diesem Beispiel wird eine veränderbare Variable verwendet bytearray:
>>> s = bytearray(1000000) # a million zeroed bytes
>>> t = buffer(s, 1) # slice cuts off the first byte
>>> s[1] = 5 # set the second element in s
>>> t[0] # which is now also the first element in t!
'\x05'
Dies kann sehr hilfreich sein, wenn Sie mehr als eine Ansicht der Daten haben möchten und nicht mehrere Kopien im Speicher halten möchten (oder können).
Beachten Sie, dass dies in Python 3 bufferdurch das besser benannte ersetzt wurde memoryview, obwohl Sie beides in Python 2.7 verwenden können.
Beachten Sie auch, dass Sie keine Pufferschnittstelle für Ihre eigenen Objekte implementieren können, ohne sich mit der C-API zu befassen, dh Sie können dies nicht in reinem Python tun.
s[6:11]beansprucht auch keinen zusätzlichen Speicherplatz. Liege ich falsch?