わからなかったこと
仮引数と実引数の各役割と関係性
(仮引数name
と、関数を呼び出す際の引数player_name
がなぜ一致するのか)
仮引数と実引数とは?
- 仮引数とは
関数を定義するときに使う変数の名前のこと
実際に関数を呼び出すときに受け取る「器」のような役割 - 実引数とは
実際に関数を呼び出すときに渡す値のこと
それらの関係性は?
- 仮引数は実引数を受け入れることができる変数 (器のようなもの)
- 実引数は、関数の実行時に渡すことのできる変数もしくは値
コードで確認
def print_hand(hand, name='ゲスト'): # name が仮引数
print(name + 'は' + hand + 'を出しました')
player_name = input('名前を入力してください:')
if player_name == '':
print_hand('グー') # 実引数を1つだけ渡す → 仮引数name にはデフォルト値の 'ゲスト' が入る
else:
print_hand('グー', player_name) # 実引数を2つ渡す → 仮引数name には 実引数player_name の値が入る
解説
~nameとplayer_nameが一致する理由~
- 関数を定義するとき(仮引数)
def print_hand(hand, name='ゲスト'):
ここでのname
は仮引数で、デフォルト引数値として'ゲスト'
が設定されている。 - 関数を呼び出すとき(実引数)
print_hand('グー', player_name)
このとき、player_name
の値が 上記1.のname
に代入される。
🔽上のPythonコードを日本語で書いてみるとこんな感じ!🔽
# そもそもname は仮引数である
if 引数が指定されている:
呼び出された関数内で参照される
else:
呼び出された関数内で参照できる引数がないため仮引数の初期値が参照される
ただし初期値がない場合はコードを実行できない
実際のコードの流れ
- ユーザーが名前を入力する
- 名前が入力されない(空文字)の場合:
実引数がないため、name='ゲスト' が使われる - 名前が入力された場合:
player_name が実引数として使われ、name に代入される
まとめ 〜今回わからなかったことの解決のポイント〜
- そもそもname = player_nameという定義付けが行われたわけではない。
nameとplayer_nameは、ある関数の中での仮引数と実引数という関係性である。 - 関数を呼び出すときに実引数を渡すと、その値が仮引数に代入される。
- 実引数を渡さない場合、デフォルト引数値があるときはそれが参照される。
ただし、デフォルト引数値がないときはエラーになり、コードが実行されない。
キーワード:デフォルト引数値、仮引数、実引数