質問

があります buffer Pythonと入力しましたが、どうやって使用すればよいのかわかりません。

の中に Python ドキュメント 説明は次のとおりです。

buffer(object[, offset[, size]])

object 引数は、バッファ呼び出しインターフェイス (文字列、配列、バッファなど) をサポートするオブジェクトである必要があります。オブジェクト引数を参照する新しいバッファ オブジェクトが作成されます。バッファ オブジェクトは、オブジェクトの先頭 (または指定されたオフセット) からのスライスになります。スライスはオブジェクトの最後まで拡張されます (または、size 引数で指定された長さになります)。

役に立ちましたか?

解決

使用例:

>>> 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 の部分文字列であり、余分な記憶領域を必要とせず、文字列のスライスを参照します。

これは、このような短い文字列にはあまり役に立ちませんが、大量のデータを使用する場合には必要になることがあります。この例では可変の 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 3 ではどちらも使用できますが、Python 2.7 ではどちらも使用できます。

また、C API を詳しく調べなければ、独自のオブジェクトのバッファ インターフェイスを実装できないことにも注意してください。純粋な Python ではそれを行うことはできません。

他のヒント

私は、バッファは、例えばあると思いますネイティブライブラリへのpythonをインタフェースする場合に便利。 (グイド・ヴァンロッサムは、このメーリングリストポストのnoreferrer">

scroll top