Python対話モード(REPL)入門:書いたコードを即実行できる基本の使い方と便利ワザ

コードを書いてすぐに結果を確かめられるPythonの対話モード(REPL)は、学習・検証・デバッグの強力な相棒です。

この記事では、起動と終了の基本、式評価やヘルプの見方、複数行入力のコツ、補完や計測などの便利ワザ、そしてトラブル対策まで、実践的に解説します。

目次
  1. 対話モード(REPL)とは?Pythonを即実行できる基本とメリット
  2. Python対話モードの起動・終了方法(Windows/Mac/Linux)
  3. 基本の使い方:式評価・変数・ヘルプの活用
  4. 複数行入力と編集のコツ(関数定義・インデント・履歴)
  5. 便利ワザ:REPLでの生産性アップ
  6. よくあるトラブルと使い分け
  7. まとめ

対話モード(REPL)とは?Pythonを即実行できる基本とメリット

REPLの意味とPython対話モードの特徴

REPLは「Read-Eval-Print Loop」の略で、入力(Read)を評価(Eval)し、結果を表示(Print)して、再び待機(Loop)する対話的な実行環境を意味します。

PythonのREPLでは、>>> プロンプトに式や文を書くだけで即時に評価・表示されるため、次のような特徴があります。

  • 1行からすぐ試せる即時性があり、フィードバックが早いです。
  • 組み込みのヘルプや補完により、API探索が容易です。
  • 履歴を辿って再実行・編集できるため、反復的な試行に強いです。

学習・デバッグ・試作での対話モードの活用シーン

学び始めたばかりの型・文法の確認、標準ライブラリやサードパーティAPIの手触り確認、関数の境界条件の検証、小さなアルゴリズムのプロトタイピングなどで活躍します。

エラーの最小再現や、パフォーマンスの概算見積もりにも向いています。

Python対話モードの起動・終了方法(Windows/Mac/Linux)

起動コマンド:python / py / python3 とバージョン確認

環境により呼び出しコマンドが異なります。

まずはバージョン確認で動作するコマンドを把握します。

Shell
# Windows(推奨ランチャー)
py --version
# 例: Python 3.12.4

# Windowsでpythonが通っている場合
python --version

# macOS / Linux(多くはpython3)
python3 --version

Shell起動コマンド(バージョンは省略可
# バージョンを指定して起動(Windowsランチャー)
py -3.12

起動に成功すると、>>> が表示されます。

Python 3.12.4 (main, ...) on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

仮想環境(venv)でREPLを開く手順

依存関係を汚さないために、プロジェクトごとに仮想環境を使うのが基本です。

Shell
# 仮想環境の作成(プロジェクト直下に .venv を作成)
python -m venv .venv   # macOS/Linux は python3 -m venv .venv でも可

# 有効化(activate)
# Windows PowerShell
.venv\Scripts\Activate.ps1
# Windows cmd.exe
.venv\Scripts\activate.bat
# macOS/Linux(bash/zsh)
source .venv/bin/activate

# 有効化後にPythonを起動
python
実行結果
(.venv) yourproject % python
Python 3.12.4 (main, ...) on darwin
>>>

仮想環境が有効だと、プロンプトに環境名が表示され、which python(macOS/Linux)や where python(Windows)で仮想環境内のPythonが参照されます。

対話モードの終了方法:exit()・quit()・Ctrl+D/Ctrl+Z

終了方法はいくつかあります。

覚えやすいのは exit() とショートカットです。

方法macOS/LinuxWindows
関数呼び出しexit() または quit()exit() または quit()
キー操作Ctrl+D(EOF)Ctrl+Z の後に Enter(EOF)

基本の使い方:式評価・変数・ヘルプの活用

>>> プロンプトでの式評価と結果表示(print不要)

REPLでは、式の評価結果が自動で表示されます。

print は明示的に標準出力へ出したいときに使います。

Python
# 1. 式の評価はそのまま結果が表示されます
>>> 1 + 2
# 2. 関数呼び出しの戻り値も表示されます
>>> len("hello")
# 3. print は常に文字として出力され、戻り値 None は表示されません
>>> print("hi")
実行結果
3
5
hi

変数の定義・再代入・直前結果を示す _ の使い方

代入文は値が表示されません。

直前の評価結果は特殊変数 _ に入ります(自身で _ を上書きするとその挙動は失われます)。

Python
>>> x = 10      # 代入は表示なし
>>> x + 5
>>> _
>>> x = _ * 2   # 直前の結果で再計算
>>> x
実行結果
15
15
30
30

注意点として、_ はREPLの内部変数です。

可読性のため、計算途中の値を保持したい場合は明示的な変数名を使うことをおすすめします。

help()・dir()・type()でAPIとドキュメントを調べる

標準で強力な探索機能が備わっています。

Python
# オブジェクトや関数の型を知る
>>> type(42)
>>> type("abc")

# 利用可能な属性・メソッド一覧
>>> dir(str)            # str型の属性
>>> dir("abc")          # インスタンスの属性

# インラインドキュメント(q で終了)
>>> help(str.replace)

出力例(抜粋):

text
<class 'int'>
<class 'str'>
['__add__', '__class__', ..., 'upper', 'zfill']
Help on method_descriptor:
replace(self, old, new, count=-1, /)
    Return a copy with all occurrences of substring old replaced by new.

importで標準ライブラリを試す(math・random など)

気軽にライブラリを試せるのもREPLの魅力です。

Python
>>> import math, random
>>> math.sqrt(2)
>>> random.choice(["red", "green", "blue"])
実行結果
1.4142135623730951
green

複数行入力と編集のコツ(関数定義・インデント・履歴)

関数定義・if/for の複数行入力(空行でブロック終了)

複数行ブロックでは ... の継続プロンプトが出ます。

空行を挟むとブロックが確定します。

Python
>>> def fib(n):
...     a, b = 0, 1
...     seq = []
...     for _ in range(n):
...         seq.append(a)
...         a, b = b, a + b
...     return seq
...                 # ← 空行で確定
>>> fib(7)
実行結果
[0, 1, 1, 2, 3, 5, 8]

履歴検索と行編集ショートカット(↑、Ctrl+R、Ctrl+A/E 等)

  • 上下矢印で入力履歴を巡回できます。
  • Ctrl+R で履歴の逆順検索(readline対応環境)。キーワードをタイプすると該当コマンドが出ます。
  • Ctrl+A(行頭へ)、Ctrl+E(行末へ)、Ctrl+K(カーソル以降を削除)、Ctrl+U(カーソル以前を削除)などの編集操作が使えます。

注: macOS/LinuxはGNU readlineが既定で有効なことが多く、これらのキーが使えます。

Windowsでも上下矢印や基本編集は機能しますが、Ctrl+Rの逆検索など一部は環境(Windowsターミナル、WSL、Git Bash 等)に依存します。

コピー&ペースト時のプロンプト記号とインデントの注意

チュートリアルにある >>>... をそのまま貼り付けると SyntaxError になります。

貼り付ける場合はプロンプト記号を取り除き、インデントが揃っていることを確認してください。

特にタブとスペースが混在すると IndentationError になります。

Python
# 悪い例(>>> ... を含む)
>>> for i in range(3):
...     print(i)

# 良い例(プロンプト無し、インデントはスペース4推奨)
for i in range(3):
    print(i)
実行結果
0
1
2

便利ワザ:REPLでの生産性アップ

Tab補完(readline環境)と rlcompleter の設定

Tab補完が有効だと、変数名や属性名が半自動で入力できます。

多くの環境で既定有効ですが、無効な場合は rlcompleter を設定します。

Python
# セッション内だけで有効化
>>> import readline, rlcompleter   # Windowsでは環境によりreadlineが無い場合あり
>>> readline.parse_and_bind("tab: complete")
>>> import math
>>> math.sq<Tab>    # ← Tab で補完(例)

出力例(補完候補の一例):

text
sqrt   sqrt1pm1

恒常的に有効化したい場合は、ホームに ~/.pythonrc.py(Windowsは任意パス)を作り、環境変数 PYTHONSTARTUP にそのパスを設定します。

Python
# ~/.pythonrc.py の例(コメント付き)
import sys
try:
    import readline
    import rlcompleter
    readline.parse_and_bind("tab: complete")
    # 履歴ファイル
    import atexit, os
    histfile = os.path.expanduser("~/.pyhistory")
    try:
        readline.read_history_file(histfile)
    except FileNotFoundError:
        pass
    atexit.register(readline.write_history_file, histfile)
except Exception as e:
    print(f"[startup warning] {e}", file=sys.stderr)

設定例(シェルの初期化ファイルに追記):

Shell
# macOS/Linux(bash/zsh)
export PYTHONSTARTUP="$HOME/.pythonrc.py"

pprint・json・from math import * で結果を見やすく

複雑な構造は pprintjson を使うと把握しやすくなります。

Python
>>> from pprint import pprint
>>> data = {"users": [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}], "ok": True}
>>> pprint(data)

>>> import json
>>> print(json.dumps(data, ensure_ascii=False, indent=2))
実行結果
{'ok': True, 'users': [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}]}
{
  "users": [
    {
      "id": 1,
      "name": "Alice"
    },
    {
      "id": 2,
      "name": "Bob"
    }
  ],
  "ok": true
}

from math import * は打鍵数が減りますが、名前の衝突や可読性低下の原因になります。

REPLでは一時的な用途に限り、import math as m のように短いエイリアスを使うのが安全です。

Python
>>> import math as m
>>> m.tau   # 2π
実行結果
6.283185307179586

timeit で簡易ベンチマーク、dis でバイトコード確認

小さな比較ならREPLの timeit が便利です。

Python
>>> import timeit
>>> timeit.timeit("sum(range(1000))", number=10000)
>>> timeit.timeit("s=0\nfor i in range(1000): s+=i", number=10000)

出力例(環境差あり):

text
0.0278
0.0413

バイトコードの観察には dis を使います。

Python
>>> import dis
>>> def add(a, b): return a + b
>>> dis.dis(add)

出力例(抜粋):

text
  1           0 RESUME                   0
              2 LOAD_FAST                0 (a)
              4 LOAD_FAST                1 (b)
              6 BINARY_OP               13 (+)
              10 RETURN_VALUE

例外とスタックトレースを読み解くコツ

トレースバックは「一番下が原因」です。

行番号・関数名・エラーメッセージを確認します。

Python
>>> def div(a, b):
...     return a / b
...
>>> def compute():
...     return div(10, 0)
...
>>> compute()
実行結果
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in compute
  File "<stdin>", line 2, in div
ZeroDivisionError: division by zero
  • 末尾の ZeroDivisionError: division by zero が直接の原因です。
  • その直上に呼び出し経路(computediv)が示されます。
  • 入力位置(<stdin>)と行番号で、どこを直せばよいかが分かります。

より高機能な対話環境:IPython / ptpython の紹介

機能拡張を求めるなら以下が有力です。

  • IPython: 豊富な補完、ヘルプの整形、シンタックスハイライト、マジックコマンド(例: %timeit, %paste, %run)など。
  • ptpython: 先読み補完、マルチライン編集、テーマ切替など、軽快な操作感。

導入は次の通りです。

Shell
pip install ipython ptpython
ipython
ptpython

よくあるトラブルと使い分け

日本語入出力・エンコーディングの注意点

REPL自体はUTF-8対応ですが、端末側の設定で文字化けすることがあります。

  • macOS/Linux: 端末のロケールがUTF-8なら通常問題ありません。locale で確認できます。
  • Windows: 端末のコードページをUTF-8にすると安定します。
Batch File
:: Windows のコンソールをUTF-8へ
chcp 65001

Python側で明示する方法(3.7+)もあります。

Python
>>> import sys
>>> sys.stdout.reconfigure(encoding="utf-8")
>>> print("日本語OK")
実行結果
日本語OK

環境変数で強制する方法もあります。

Shell
# 一時的にI/OエンコードをUTF-8に
export PYTHONIOENCODING=utf-8
# Python 3.7+ のUTF-8モード(Windowsで有効)
export PYTHONUTF8=1

モジュールの再読み込み:importlib.reload の基本

外部ファイルを編集したあと、REPLを落とさずに反映するには再読み込みを使います。

Python
# m.py を編集していると仮定
>>> import m              # 1回目
>>> import importlib
>>> importlib.reload(m)   # 変更反映

注意点として、from m import foo のように名前を直接取り込んだ場合、reload(m) しても foo の参照は更新されません。

REPLでは import m とモジュール名経由の呼び出しを基本にすると安全です。

REPLとスクリプトの使い分け指針(短い検証はREPL、長い処理はファイル)

  • REPL向き: 1~数行の検証、API探索、最小再現、軽い計測や可視化の試行。
  • スクリプト向き: 複数関数にまたがる処理、再実行や共有が必要なコード、テストやCIに組み込みたい処理、引数や設定を受け取るツール。

REPLで確認した動作をスクリプトに書き出し、バージョン管理する流れが実務では効率的です。

まとめ

Pythonの対話モード(REPL)は、学習から日常の開発まで幅広く力を発揮します。

起動・終了の基本、式評価と _ の活用、help/dir/type によるAPI探索、複数行ブロックの扱い、履歴と補完の編集術、pprint/json/timeit/dis などの実用ツール、そして日本語や再読み込みの注意点を押さえれば、短時間で確信を持ってコードを磨けます。

さらに必要があれば、IPythonやptpythonで快適性を高める選択肢もあります。

まずは手元の端末で python を起動し、小さな疑問から即座に試す習慣を身につけていきましょう。

クラウドSSLサイトシールは安心の証です。

URLをコピーしました!