用語比較
str()とrepr()の違い|読みやすい表現か、インタプリタが読める表現か(Python3基礎)
str()とrepr()は、どちらも値を文字列に変換する関数です。違いは、表現の目的です。str()は人間にとって読みやすい表現を返すためのもので、repr()はインタプリタが読める表現を作るためのものです。人が読むならstr、インタプリタが読むならreprと覚えると、読み分けやすくなります。
Python公式チュートリアル7.1は、デバッグ用に変数をさっと表示したいだけなら、repr()またはstr()で任意の値を文字列にできると説明しています。数値や、リスト・辞書のような構造では、どちらの関数でも同じ表現になるものが多く、文字列には2つの異なる表現があります。
Python3エンジニア認定基礎試験は、公式チュートリアルの内容を章ごとの出題率で出題する形で、第7章の入力と出力も範囲です。この記事では、チュートリアルの例を使って、2つの関数の結果の差を確認します。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。
結論
str()
人間にとってかなり読みやすい値の表現を返す。人間向けの特別な表現がないオブジェクトでは、repr()と同じ値を返す。
repr()
インタプリタが読める表現を作る。同等の構文がなければ、SyntaxErrorになる表現になる。文字列では、引用符とバックスラッシュが付く。
違いを表で確認
| 比較軸 | str() | repr() |
|---|---|---|
| 表現の目的 | 人間にとってかなり読みやすい表現 | インタプリタが読める表現 |
| 文字列 'Hello, world.' の結果 | str(s) は 'Hello, world.' | repr(s) は "'Hello, world.'"(引用符が付く) |
| 数値・リスト・辞書 | repr()と同じ表現になるものが多い | str()と同じ表現になるものが多い |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
どこで迷っているかを切り分ける
表示の引用符が付いたり付かなかったりして迷う人
文字列には2つの異なる表現があります。引用符が付くのがrepr()の表現で、付かないのがstr()の表現です。
どちらを使えばいいか迷う人
公式は、デバッグで変数をさっと表示するだけなら、repr()またはstr()で文字列にできると説明しています。使い分けは編集部の目安ですが、利用者に見せる表示ならstr()、値の正確な姿を見たいならrepr()と考えると整理しやすくなります。
具体例で使い分ける
例 1
チュートリアル7.1の str(s) と repr(s)
s = 'Hello, world.' に、str()とrepr()を適用します。
- str(s) の結果は 'Hello, world.' です。
- repr(s) の結果は "'Hello, world.'" で、文字列の引用符が内側に含まれています。
- str(1 / 7) の結果は '0.14285714285714285' です。数値は、どちらの関数でも同じ表現になるものが多くあります。
結論: 文字列では、repr()の結果に引用符が付きます。数値や、リスト・辞書では、同じ表現になるものが多くあります。
例 2
チュートリアル7.1の改行を含む文字列
hello = 'hello, world\n' に、repr()を適用して print() で表示します。
- チュートリアルは、文字列のrepr()は引用符とバックスラッシュを付けると説明しています。
- print(repr(hello)) は 'hello, world\n' と表示されます。
結論: repr()の結果は、引用符とバックスラッシュが付いた文字列になります。
問題文から答えを選ぶ手順
- 1
読み手を決める
人が読む表示ならstr()、インタプリタが読める表現が欲しいならrepr()です。
- 2
値の型を見る
数値やリスト・辞書では、どちらも同じ表現になるものが多くあります。差が出るのは、文字列のような値です。
- 3
f文字列では別ページを見る
f文字列の変換指定(!s・!r・!a)は、f文字列とformat()の違いのページで確認できます。
試験での見分け方
- 1str()は、人間にとってかなり読みやすい表現を返すためのもの。
- 2repr()は、インタプリタが読める表現を作るためのもの。
- 3人間向けの特別な表現がないオブジェクトでは、str()はrepr()と同じ値を返す。
- 4repr()の引数は、任意のPythonオブジェクトでよい。
誤答しやすい選択肢
str()とrepr()が、いつも別の結果になると考える
修正: 数値や、リスト・辞書のような構造では、どちらの関数でも同じ表現になるものが多くあります。
repr()の結果から引用符が消えると考える
修正: 文字列のrepr()は、引用符とバックスラッシュを付けた表現になります。
確認問題
Q1インタプリタが読める表現を作る関数は?
答え: repr()
チュートリアル7.1が、repr()はインタプリタが読める表現を作るためのものだと説明しています。
Q2s = 'Hello, world.' のとき、repr(s) の結果は?
答え: "'Hello, world.'"
チュートリアル7.1の例です。文字列の引用符が結果に含まれます。
Q3人間向けの特別な表現がないオブジェクトに、str()を適用すると?
答え: repr()と同じ値を返す
チュートリアル7.1が、そうしたオブジェクトではstr()はrepr()と同じ値を返すと説明しています。
到達チェック
- str()とrepr()の目的を言い分けられる
- 文字列でrepr()の結果に引用符が付くことを説明できる
- 数値では2つの関数が同じ表現になるものが多いと説明できる
関連ページで確認する
同じ資格で次に知りたいこと
- open()のモード 'w' と 'a' の違い|上書きか、末尾に追加か(Python3基礎)
open()のモード 'w' と 'a' の違いを、既存ファイルの扱いで整理します。Python公式チュートリアル7.2の記述、'r'・'r+'との対応、省略時のモード、確認問題つき。
- raiseとraise ... fromの違い|例外の連鎖の表示(Python3基礎)
except節の中で別の例外をraiseしたときの表示と、from節・from Noneを付けたときの違いを、Python公式チュートリアル8.5の例で整理します。確認問題つき。
- json.dump()とjson.dumps()の違い|ファイルに書くか、文字列で受け取るか(Python3基礎)
json.dump()とjson.dumps()の違いを、出力先で整理します。Python公式チュートリアル7.2.2の記述、json.dumps([1, 'simple', 'list'])の結果、json.load()との対応、確認問題つき。
よくある質問
Qstr()とは?
値を、人間にとってかなり読みやすい文字列表現にする関数です。
Qrepr()とは?
値を、インタプリタが読める文字列表現にする関数です。文字列では、引用符とバックスラッシュが付きます。
Qstr()とrepr()の違いは?
表現の目的です。str()は人間向けの読みやすさ、repr()はインタプリタが読めることを目指します。
QPython3基礎試験の範囲?
公式の出題範囲は公式チュートリアルの章単位で、第7章の入力と出力と、7.1の出力の書式を含みます。出題の形式は受験前に公式の案内で確認してください。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: ミナト編集部(運営者情報を見る)
