組み込み関数 repr

 repr(object)

 引数オブジェクトを印字可能な形に表現したものを含む文字列を返します。str()との違いは、eval() に渡されたときに同じ値を持つようなオブジェクトを表す文字列を生成しようとします。よく分かりませんねぇ。次の例を見てください。

#coding: shift-jis
#実はコンピュータは0.1が数えられない!!
L = [0.5,0.1]
print L[0]
print L[1]
print L

print "strで表示すると",str(0.1)
print "reprで表示すると",repr(0.1)

raw_input()

出力画面:
 0.5
 0.1
 [0.5, 0.10000000000000001]
 strで表示すると 0.1
 reprで表示すると 0.10000000000000001
 実はコンピュータは0.1が数えられない!!

 衝撃の事実を思わず書いてしまいました。上の例をみると0.5と0.1をリストにして、それぞれ表示しています。これは問題ないですね。でも次にリスト全部を表示してみると、0.5は正しいのですが、0.1は近いんだけどちょっと違う数字になっています。
 これは、コンピュータの構造上どうしても0.1が数えられないため、近い数字で代用しています。しかしそのことは十分に分かっているため、print命令文などでコンピュータ外部(今回はユーザー、あなたです)に見せる場合は、誤差として省いて表示して、うそをついています。
 strはprintと同じように外部に出力するための文字列に変換します。reprはeval()などまだまだ処理されるだろうということで、内部処理用の文字列に変換します。