使用例:
>>> s = 'Hello world'
>>> t = buffer(s, 6, 5)
>>> t
<read-only buffer for 0x10064a4b0, size 5, offset 6 at 0x100634ab0>
>>> print t
world
この場合のバッファーは、位置6から始まり長さ5のサブストリングであり、余分なストレージ領域を必要としません-ストリングのスライスを参照します。
これは、このような短い文字列にはあまり役立ちませんが、大量のデータを使用するときに必要になる場合があります。この例ではmutableを使用してい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'
これは、データの複数のビューが必要で、メモリに複数のコピーを保持したくない(または保持できない)場合に非常に役立ちます。
注buffer
良くという名前に置き換えられていmemoryview
ますが、Pythonの2.7のいずれかで使用できますが、Pythonの3に。
また、C APIを掘り下げることなく、独自のオブジェクトのバッファーインターフェイスを実装することはできません。つまり、純粋なPythonでは実行できません。
s[6:11]
しても余分なストレージ容量は必要ありません、私は間違っていますか?