用語比較
仮引数と実引数の違い|def fib(n) の n と fib(2000) の 2000 で見分ける(Python3基礎)
def fib(n): と書いた関数を fib(2000) と呼ぶとき、n が仮引数、2000 が実引数です。名前は似ていますが、書く場所と役割が違います。
仮引数は def の括弧に書く受け皿の名前、実引数は呼び出しの括弧に書く渡す値と覚えると、問題文の「引数」がどちらを指すかを切り分けられます。
このページは、Python公式チュートリアル4章の記述と、Python 3.9.6での実行結果をもとに比べます。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。
結論
仮引数
def の後ろの丸括弧に並べる名前。def fib(n): の n。
実引数
関数を呼び出すときに渡す値。fib(2000) の 2000。関数が呼び出されるとき、ローカルのシンボルテーブルに取り込まれる。
見分け方
def の行にあれば仮引数、呼び出しの行にあれば実引数。
違いを表で確認
| 比較軸 | 仮引数 | 実引数 |
|---|---|---|
| 書く場所 | 仮引数:def の後ろの丸括弧。例:def fib(n): | 実引数:呼び出しの丸括弧。例:fib(2000) |
| 何を表すか | 仮引数:関数の中で使う名前(受け皿) | 実引数:関数に渡す実際の値(オブジェクトへの参照) |
| いつ決まるか | 仮引数:関数を定義するとき | 実引数:関数を呼び出すとき。呼び出しのたびに別の値を渡せる |
| 数が合わないとき | 仮引数が1個の fib(n) に対して、実引数が0個だと fib() は TypeError(missing 1 required positional argument: 'n') | 実引数が2個だと fib(1, 2) は TypeError(takes 1 positional argument but 2 were given) |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
どこで迷っているかを切り分ける
問題文の「引数」がどちらか迷う人
コードの中で、def の行にある名前なら仮引数、呼び出しの行にある値なら実引数です。コードの位置で判断します。
TypeError の文言で引数の数を読み違える人
エラー文の missing や takes は、定義した仮引数の数と、呼び出しで渡した実引数の数のずれを示しています。
実引数を変えると元の変数も変わるか知りたい人
公式チュートリアルは、実引数が値渡しで、ここでの値は常にオブジェクトへの参照だと述べています。挙動の確認は、関数の戻り値・スコープ・参照渡しのページで実行結果を見られます。
具体例で使い分ける
例 1
公式チュートリアルの fib の例
def fib(n): を定義し、fib(2000) を呼び出します(Python 3.9.6で実行)。
- def fib(n): の n が仮引数です。
- fib(2000) の 2000 が実引数で、呼び出されたとき n に取り込まれます。
- 出力は 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 です。
結論: def の行の n が仮引数、呼び出しの 2000 が実引数です。
例 2
実引数の数が合わない場合
仮引数が1個の fib に、実引数を0個または2個渡します。
- fib() は TypeError: fib() missing 1 required positional argument: 'n' です。
- fib(1, 2) は TypeError: fib() takes 1 positional argument but 2 were given です。
結論: 実引数の数は、仮引数の定義に合わせます。
例 3
同じ仮引数に値が二重に渡される場合
def function(a): に function(0, a=0) と呼び出します。
- 位置で渡した 0 と、キーワードで渡した a=0 が、同じ仮引数 a に当たります。
- 公式チュートリアルは、いかなる引数も値を複数回は受け取れないと述べています。
結論: TypeError: function() got multiple values for argument 'a' になります。
問題文から答えを選ぶ手順
- 1
書かれている行を見る
def の行なら仮引数、呼び出しの行なら実引数です。
- 2
受け皿か値かを見る
名前なら仮引数、渡す値なら実引数です。
- 3
数と対応を確かめる
実引数が仮引数に過不足なく、重複なく当たるかを確認します。
試験での見分け方
- 1仮引数は def の後ろの丸括弧に書く名前。
- 2実引数は関数を呼び出すときに渡す値で、値渡し(オブジェクトへの参照)で渡される。
- 3実引数の数や対応が仮引数と合わないと TypeError になる。
誤答しやすい選択肢
仮引数と実引数を同じものとして覚える
修正: def の括弧にあるのが仮引数、呼び出しの括弧にあるのが実引数です。
仮引数の名前を、呼び出し側の変数名と同じ変数だと考える
修正: 仮引数 n は関数の中のローカルな名前です。呼び出し側の変数とは別の名前として、実引数のオブジェクトを受け取ります。
位置とキーワードで同じ仮引数に二重に渡す
修正: function(0, a=0) は TypeError です。どちらか一方で渡します。
確認問題
Q1def fib(n): の n は仮引数と実引数のどちらですか?
答え: 仮引数
def の後ろの丸括弧に書く名前が仮引数です。
Q2fib(2000) の 2000 は仮引数と実引数のどちらですか?
答え: 実引数
呼び出すときに渡す値が実引数です。
Q3def fib(n): に対して fib() と呼ぶとどうなりますか?
答え: TypeError
fib() missing 1 required positional argument: 'n' になります。
到達チェック
- 仮引数が def の括弧の名前だと言える
- 実引数が呼び出しで渡す値だと言える
- 引数の数が合わないと TypeError になると言える
関連ページで確認する
同じ資格で次に知りたいこと
- datetimeとtimedeltaの違い|日付同士の引き算が経過日数になる理由(Python3基礎)
datetimeとtimedeltaの違いを、Python公式チュートリアル10.8の記述とPython 3.9.6の実行結果で整理。日付を表すdate・datetimeと、日数・秒数の差を表すtimedeltaの区別、引き算と足し算の結果の型を、確認問題つきで確認します。
- input()の戻り値(文字列)とint()で変換した整数の違い|足し算が連結になる理由(Python3エンジニア認定基礎試験)
input()が返す値は数字を入力しても文字列で、そのまま + を使うと足し算ではなく連結になります。int()で整数にする手順と、数字以外を入力したときのValueErrorの扱いを、公式ドキュメントの記述と計算例、確認問題つきで整理します。
- Decimalとfloatの違い|0.70×1.05が0.74と0.73に分かれる理由(Python3基礎)
Decimalとfloatの違いを、Python公式チュートリアル11.8の記述とPython 3.9.6の実行結果で整理。10進浮動小数と2進浮動小数の計算結果の差、等値テスト、Decimal(0.1)とDecimal('0.1')の違いを、確認問題つきで確認します。
よくある質問
Q仮引数と実引数の違いは?
仮引数は def の後ろの丸括弧に書く名前で、実引数は関数を呼び出すときに渡す値です。
Qdef fib(n) と fib(2000) では、どれが実引数ですか?
2000 が実引数で、n が仮引数です。
Q実引数は参照渡しですか、値渡しですか?
公式チュートリアルは値渡しと述べ、ここでの値は常にオブジェクトへの参照だと説明しています。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: ミナト編集部(運営者情報を見る)
