AI資格ドリル
資格を選ぶ↓

用語比較

仮引数と実引数の違い|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冊です。読んだ章は、このサイトの章別問題で確かめられます。

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

問題文の「引数」がどちらか迷う人

コードの中で、def の行にある名前なら仮引数、呼び出しの行にある値なら実引数です。コードの位置で判断します。

02

TypeError の文言で引数の数を読み違える人

エラー文の missing や takes は、定義した仮引数の数と、呼び出しで渡した実引数の数のずれを示しています。

03

実引数を変えると元の変数も変わるか知りたい人

公式チュートリアルは、実引数が値渡しで、ここでの値は常にオブジェクトへの参照だと述べています。挙動の確認は、関数の戻り値・スコープ・参照渡しのページで実行結果を見られます。

具体例で使い分ける

例 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. 1

    書かれている行を見る

    def の行なら仮引数、呼び出しの行なら実引数です。

  2. 2

    受け皿か値かを見る

    名前なら仮引数、渡す値なら実引数です。

  3. 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 になると言える

同じ資格で次に知りたいこと

よくある質問

Q仮引数と実引数の違いは?

A

仮引数は def の後ろの丸括弧に書く名前で、実引数は関数を呼び出すときに渡す値です。

Qdef fib(n) と fib(2000) では、どれが実引数ですか?

A

2000 が実引数で、n が仮引数です。

Q実引数は参照渡しですか、値渡しですか?

A

公式チュートリアルは値渡しと述べ、ここでの値は常にオブジェクトへの参照だと説明しています。

次に見る比較

執筆: ミナト編集部(運営者情報を見る)