Python の関数の引数
Python の関数を定義するときには、任意の数の引数を受け取るように定義することができます。
「引数」は「ひきすう」と読みます。関数に渡す値のことを指します。英語では arguments とか parameters と書きます。
「Python の関数定義の基本」で説明したように、Python の関数の定義は次のように def キーワードを使います。
def 関数名(引数1, 引数2, ..., 引数n):
ステートメントブロック
引数の定義の仕方にいくつか方法があるので、みていきましょう。
定義した順に引数を渡す
def で関数を定義したときの、パラメータの順番で引数を渡すと、 関数ではその順番で値を受け取れます。
def foo(a, b, c):
print(f"{a} {b} {c}")
foo('Apple', 'Orange', 'Grape')
a に Apple、 b に Orange、 c に Grape がそれぞれ渡されるので、実行結果は次のようになります。
Apple Orange Grape
変数を指定して値を渡す
上と同じ foo() 関数を考えます。関数の定義から a, b, c の三つの引数を受け取ります。 このとき、関数を呼び出す側で次のように変数を指定して値を渡すことができます。
foo(c='Apple', a='Orange', b='Grape')
実行結果は次のようになります。
Orange Grape Apple
デフォルト値を設定する
基本的に、引数を受け取る関数では、定義した数だけ全て値が渡されなければ、実行時にエラーになります。
しかし、デフォルト値を設定することで、値を渡すことを省略することができます。デフォルト値は関数の定義箇所で、引数のリストで =デフォルト値として設定します。
次の例では引数 b のデフォルト値を B、 c のデフォルト値を C としています。
def foo(a, b="B", c="C"):
print(f"{a} {b} {c}")
foo('Apple') # "Apple B C" と表示される
可変個引数を受け取る (tuple)
関数定義時に引数をいくつ受け取るかわからない場合は、関数の定義時に引数に * を付けます。 これによって、Tuple として引数を受け取ることができます。
def foo(*args):
for arg in args:
print(arg)
if len(args) > 0:
print(f"args[0] = {args[0]}")
foo('Apple', 'Orange')
実行結果は次の通りです。
Apple
Orange
args[0] = Apple
任意のキーワード引数を受け取る (dictionary)
関数定義の引数指定箇所で、 ** を付けるとディクショナリとして、任意の個数のキーと値のペアを渡すことができます。
def foo(**args):
for k in args:
print(f"{k} = {args[k]}")
foo(a='Apple', b='Orange')
この実行結果は次の通りです。
a = Apple
b = Orange
尚、ディクショナリ以外の引数を受け取りたい場合は、ディクショナリの引数の前で定義します。 例えば、 c というパラメータをディクショナリではない形で受け取るには次のようにします。
def foo(c, **args):
for k in args:
print(f"{k} = {args[k]}")
print(f"c = {c}")
foo(123, a='Apple', b='Orange')
実行結果は次のようになります。
a = Apple
b = Orange
c = 123
以上、Python の関数で使える引数の種類について説明しました。