Python

Python初学者向け:関数の引数について基本から解説

スポンサーリンク
 

この記事はこんな方におススメです
  • Pythonを始めたばかりで基本から学びたい方
  • Pythonの基本的な部分を速習してまずは全体像を把握しておきたい方

▶ 自作関数の作り方は以下の投稿で解説しています。

はじめに

今回は関数の引数について扱います。関数を呼び出すときに渡す値を「引数」といいます。関数に引数を渡すと関数内で変数として扱うことができます。この変数のことをparameter(パラメータ)、実際に渡す値のことをargument(引数)といいます。今回はこの辺の情報を基本から解説していきます。

用語の定義

解説を始める前に、まずは用語の定義をしておきましょう。Qiitaの記事にわかりやすく記載されていました。

引数(argument)
関数に渡される具体的な値。関数内での実際の計算に使用されます。

パラメータ(parameter)
関数に渡される具体的な値のプレースホルダ。パラメータ名を使うことで関数内で変数として参照できます。

https://qiita.com/raviqqe/items/ee2bcb6bef86502f8cc6

複数の引数を受け取る関数を定義

パラメータには「位置パラメータ」と「キーワードパラメータ」があります。ここからは実際にコードを動かしながら解説していくことにします。まずは複数の引数をとる簡単な関数を定義しましょう。

# 複数のparameterをとる関数の定義
def print_parameters(first,second,third):
    print(f'first:{first},second:{second},third:{third}')
    

# 関数の呼び出し    
print_parameters(47,34,31)

ここでは、3つの引数を渡すと、それぞれを表示する関数「print_parameters」を定義しています。この「print_parameters」に3つの引数、47,34,31を渡して呼び出しています。すると、期待通りにこれらの引数が表示されています。

位置パラメータとキーワードパラメータ

関数を呼び出すときに「argument(引数)を渡した位置によって指定する」ものを位置パラメータ、「argument(引数)をパラメータ名=値のように指定する」ものをキーワードパラメータという。

位置パラメータでは、関数呼び出し時にカンマ区切りで並べたargument(引数)がそのままの順序でパラメータに渡されます。位置パラメータとキーワードパラメータを混在させるときには注意が必要です。必ず、「位置パラメータを先に指定し、キーワードパラメータはその後に指定する」というルールがあります。

実際にコードを書いて確認していきましょう。先ほど作成した「print_parameters」という関数には「first」「second」「third」というパラメータがあります。先ほど、この関数を呼び出すときに「print_parameters(47,34,31)」のようにargument(引数)を指定しました。すると関数はこの順に値を受け取っていましたね。一方で、「キーワードパラメータ=値」の形で引数を指定することもできます。この場合は、指定する順番は「first」「second」「thrid」の順でなくても構いません。

# キーワードパラメータで値を指定
print_parameters(third=31,first=47,second=34)

このように同じ結果が得られました。次に位置パラメータとキーワードパラメータが混在する場合も見ておきましょう。たとえば次のような指定の仕方ではエラーとなります。

# 位置パラメータとキーワードパラメータが混在する場合
print_parameters(47,31,second=34)

これは47,31が指定されているので、関数はfirst=47,second=31を受け取ります。その後にsecond=34が指定されているため矛盾が生じてしまうためです。一方で次のコードはどうでしょう。

# 位置パラメータとキーワードパラメータが混在する場合2
print_parameters(47,third=34,second=31)

このコードでは、まず関数はfirst=47を受けております。次にthird=34,second=31と指定されているのでこれを受け取るため、正常に動作します。

但し、キーワードパラメータの指定を先頭に持ってきた以下のコードはエラーとなります。位置パラメータを指定するときは、必ずキーワードパラメータによる指定よりも前でおこなう、ということに注意してください。

# 位置パラメータとキーワードパラメータが混在する場合3
print_parameters(third=34,second=31,47)

エラーにも「SyntaxError: positional argument follows keyword argument」と記載されてますね。

スポンサーリンク

まとめ

今回は引数の渡し方についてまとめました。パラメータには位置パラメータとキーワードパラメータがあり、位置パラメータでは位置によって値を指定する、キーワードパラメータでは「キーワードパラメータ=値」の書式で値を指定します。位置パラメータとキーワードパラメータが混在するケースでは注意が必要で、必ず、位置パラメータの後にキーワードパラメータを指定する、ということに注意しましょう。

コメント

タイトルとURLをコピーしました