Python memoryview() 関数

Python3 内置函数Python3 組み込み関数


memoryview()Pythonにおいて、メモリビューを作成するために使用される組み込み関数です。

memoryview は「メモリビュー」オブジェクトを返します。これにより、Pythonコードはデータをコピーせずにオブジェクト内部のデータバッファにアクセスできます。これは、大規模なバイナリデータを処理する際にパフォーマンスを向上させることができます。

単語の意味: memoryview「メモリビュー」という意味で、データバッファにアクセスするオブジェクトです。


基本構文とパラメータ

構文形式

memoryview(obj)

パラメータの説明

  • パラメータ obj:
    • 型: バッファプロトコルを実装したオブジェクト(bytes、bytearray など)
    • 説明: メモリビューを作成するオブジェクト。

関数の説明

  • 戻り値: memoryview オブジェクトを返します。
  • 特徴: オブジェクト内部のデータにコピーせずに直接アクセスできます。

例

例1:memoryview の作成

例

# bytearray から作成
data = bytearray(b"Hello")
m = memoryview(data)
print(m)          # 出力: <memory at 0x...>

# bytes から作成
data = b"World"
m = memoryview(data)
print(m[0])       # 出力: 87 (W の ASCII コード)

# 複数バイトへのアクセス
print(m[0:3])     # 出力: <memory at 0x...>

実行結果の予想:

<memory at 0x104174c40>
87
<memory at 0x104174c40>

コードの解説:

  1. memoryview は bytes または bytearray から作成できます。
  2. インデックス操作とスライス操作をサポートします。

例2:データの変更(可変オブジェクトのみ)

例

# memoryview は基になるデータを直接変更できます
data = bytearray(b"Hello")
m = memoryview(data)

# 基になるデータを変更
m[0] = 74  # 'J'
print(data)  # 出力: bytearray(b'Jello')

# スライスによる変更
m[1:5] = b"abcd"
print(data)  # 出力: bytearray(b'Jabcd')

# C型フォーマット
data = b"\x01\x02\x03\x04"
m = memoryview(data)
print(m.tobytes())  # 出力: b'\x01\x02\x03\x04'

実行結果の予想:

bytearray(b'Jello')
bytearray(b'Jabcd')
b'\x01\x02\x03\x04'

memoryview は基になるデータを直接変更できるため、大規模なバイナリデータの処理に非常に効率的です。


Python3 内置函数Python3 組み込み関数


その他の拡張