次のような関数を呼び出すとき、引数を指定する方法に2通りあります。
In [31]:
def func(arg1, arg2, arg3):
print("arg1は:", arg1, "arg2は:", arg2, "arg3は:", arg3)
一つは、これまで見たように、
In [32]:
func("引数1", "引数2", "引数3")
と、引数を順番に並べる方法です。この方法で指定する書き方を、位置引数 といいます。
もう一つは、
In [33]:
func(arg1="引数1", arg2="引数2", arg3="引数3")
のように、 引数名=値
という形式で、引数名を指定して指定する方法です。この書き方を、キーワード引数 と言います。
キーワード引数の場合、位置引数と違って、好きな順番で引数を指定できます。
func("引数1", "引数2", "引数3")
と
func(arg3="引数3", arg2="引数2", arg1="引数1")
は、引数の順番は違いますが、どちらも同じ結果になります。
また、位置引数とキーワード引数を、混ぜて使うこともできます。arg1
だけ位置引数で指定して、残りの arg2
と arg3
はキーワード引数で指定してみましょう。
In [34]:
func("引数1", arg2="引数2", arg3="引数3")
デフォルト引数¶
関数の引数には、指定されなかったときに使われるデフォルト値を指定できます。デフォルト値は、次のように 引数名=デフォルト値
の形式で指定します。
def 関数名(引数名=デフォルト値):
...
次の例では、引数 arg
にはデフォルト値として 999
が指定されています。
In [2]:
def func1(arg=999):
print(arg)
引数を指定して func1
を呼び出すと、指定した値が出力されます。
In [4]:
func1(12345)
引数を省略して func1
を呼び出すと、デフォルト値である 999
が出力されます。
In [37]:
func1()
もう一つ、今度は 関数の定義 で書いた fruit_price()
を修正して、宛名をつけて金額を出力する関数を作ってみましょう。fruit_price()
は、こんな関数でした。
def fruit_price(number_of_momo, number_of_mikan):
total_momo = number_of_momo * 200
total_mikan = number_of_mikan * 40
total = total_momo + total_mikan
return total
この関数を、金額を返すのではなく、金額を出力するようにしてみます。
宛名が指定されていればその宛名を、省略されると「上様」と出力するようにしましょう。
In [38]:
def fruit_price(number_of_momo, number_of_mikan, name="上"):
total_momo = number_of_momo * 200
total_mikan = number_of_mikan * 40
total = total_momo + total_mikan
print(name, "様: もも", number_of_momo, "個と、みかん", number_of_mikan, "個で、", total, "円です")
この関数は、次のように name
を指定して呼び出すと、指定した名前+様 〜
と出力します。
In [39]:
fruit_price(10, 20, 'python.jp')
name
を省略すると、上 様 〜
と出力します。
In [40]:
fruit_price(50, 60)