Python入門、DIY、クッキング

小さなことをやってみるブログ

Pythonのmemoryview関数でメモリビューオブジェクトを取得する(初心者のPython入門)

2019年7月3日

Pythonでメモリビューオブジェクトを取得するmemoryview関数の使い方です。(Pythonの標準関数です。)

Pythonの標準関数一覧はこちらです。

メモリビューオブジェクトとは

メモリビューオブジェクトとは、変数をメモリとして参照するために使います。

bytes、bytearrayの内部データを参照したり書き換えたりすることが出来ます。

memoryview関数の使い方

memoryview(obj)

与えられたオブジェクト(obj)から作られた"メモリビュー オブジェクトを返します。

オブジェクトはbytes、bytearrayであることが前提です。

以下のとおり試してみます。

# 文字の前にbと記載することでbytes型として定義する
abc=b'abcdefghijklmnopqrstuvwxyz'

# メモリビューオブジェクト取得
mv=memoryview(abc)

# メモリオブジェクトをそのまま表示
print(mv)
# 1文字をコードのまま表示
print(mv[0])
# Unicode値を文字として表示
print(chr(mv[0]))
print(chr(mv[1]))

実行結果は以下のようになりました。

<memory at 0x000001BFF492D7C8>
97
a
b

メモリビューオブジェクトをそのまま表示すると、アドレスが表示されました。

文字を1文字のみコードのまま表示すると、97が表示されました。(これは'a'の文字コードです)

文字コードではわかりにくいので、chr関数によって文字として表示すると、1文字目が’a'、2文字目が'b'と表示されました。

bytes型の1文字目と2文字目が正しく表示されましたね。

メモリビューオブジェクトを使うことで、メモリ内を直接操作することができます。画像を格納して画像処理などにも使えそうですね。

  • B!