[解決済み] Pythonのバッファタイプは何のためにあるのですか?
2022-05-12 03:46:36
質問
ある
buffer
型がありますが、どのように使用すればよいのかわかりません。
で Pythonドキュメント という記述があります。
buffer(object[, offset[, size]])
object 引数は buffer 呼び出しインタフェースをサポートするオブジェクトでなければなりません (文字列、配列、buffer など)。object 引数を参照する新しい buffer オブジェクトが作成されます。バッファオブジェクトは、オブジェクトの先頭から(または指定されたオフセットから)スライスされます。スライスはオブジェクトの終わりまで拡張されます(または size 引数で指定された長さを持ちます)。
どのように解決するのですか?
使用例です。
>>> s = 'Hello world'
>>> t = buffer(s, 6, 5)
>>> t
<read-only buffer for 0x10064a4b0, size 5, offset 6 at 0x100634ab0>
>>> print t
world
この場合のバッファは、長さ5で位置6から始まる部分文字列で、余分なストレージスペースを取りません - それは文字列のスライスを参照します。
このような短い文字列ではあまり役に立ちませんが、大量のデータを使うときには必要な場合があります。この例では、ミュータブルな
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ではどちらも使うことができます。
また、C APIを掘り下げることなく、独自のオブジェクトのためにバッファインターフェースを実装できないこと、つまり、純粋なPythonでそれを行うことができないことに注意してください。
関連
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] __init__.py は何のためにあるのですか?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】forループを使った辞書の反復処理
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み] データ型が理解できない
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み] どのPythonのメモリプロファイラがお勧めですか?[クローズド]