Pythonでは、オブジェクトの「長さ」を取得するためのlen()
関数と、オブジェクトのメモリサイズを取得するためのsys.getsizeof()
関数があります。これら二つの関数は、それぞれ異なる目的で使用されます。
len()関数
len()
関数は、コンテナ内のアイテムの数を返します。文字列の場合、これは文字の数になります。
x = "abc"
print(len(x)) # 出力: 3
sys.getsizeof()関数
一方、sys.getsizeof()
関数は、オブジェクトのメモリサイズをバイト単位で返します。これは、オブジェクトがメモリ上で占めるスペースの大きさを示します。
import sys
x = "abc"
print(sys.getsizeof(x)) # 出力: 52
この例では、文字列x
は3文字しかありませんが、そのメモリサイズは52バイトとなります。これは、Pythonの文字列オブジェクトが単なる文字のシーケンス以上の情報を保持しているためです。
まとめ
したがって、len()
とsys.getsizeof()
は全く異なる情報を提供します。len()
はコンテナ内のアイテムの数を、sys.getsizeof()
はオブジェクトのメモリサイズを提供します。これらの違いを理解することは、Pythonでのメモリ管理と効率的なコード作成に役立ちます。