Pythonを勉強始めたばかりだと関数の引数を正しく理解できておらず、TypeErrorなどに出くわすことがあると思います。
関数にはいくつかルールがあります。ここでは、Pythonの関数における引数について初心者向けに解説しています。
この記事の対象
関数における引数の型
デフォルト引数
def 関数名(引数1,引数2=値,引数3=値...):
#処理内容
return 戻り値
関数名(引数1,...)
関数を定義するとき、引数における初期値を設定できます。引数が指定されなかった場合に初期値が使用されます。これがデフォルト引数(default argument)になります。
位置引数
引数の順番によって値が決定されて、関数の定義文で指定された引数と対応させる「位置引数(positional argument)」というものがあります。
例えば、以下のような関数があるとします。
def add_numbers(a, b=0, c=0):
return a + b + c
result = add_numbers(1) # a=1, b=0, c=0
result2 = add_numbers(1, 2) # a=1, b=2, c=0
result3 = add_numbers(1, c=3) # a=1, b=0, c=3
result4 = add_numbers(1, 2, 3) # a=1, b=2, c=3
result5 = add_numbers(c=3, a=1) # a=1, b=0, c=3
この関数は、位置引数とデフォルト引数を使用しています。aは必須の位置引数で、bとcはデフォルト引数であり、省略可能です。
結果
1
3
4
6
4
関数の引数での注意点
- 引数の順序は、位置引数が先に来て、その後にキーワード引数が続くように指定する必要があります。
- デフォルト引数を指定する場合は、必ず位置引数の後ろに指定する必要があります。
- 可変長引数を使用する場合、位置引数、キーワード引数、デフォルト引数を定義することはできません。
可変長引数については以下をご参照下さい。
関数における引数を用いた使用例
#関数における引数を用いた使用例
def henkan(mm_number,length="inch"):
if length == "inch":
result = mm_number * 0.03937
elif length == "cm":
result = mm_number / 10
elif length == "寸":
result = mm_number * 0.033
result_out = "{0}mmは{1}{2}です。".format(mm_number,result,length)
print(result_out)
henkan(2,"inch")
henkan(2,"cm")
henkan(3,"寸")
上記のプログラムは「mm」単位から任意の単位に変換するものです。引数として、任意の数値と単位を指定して、関数の中で単位変換の計算を行い、結果を出力しています。
結果
2mmは0.07874inchです。
2mmは0.2cmです。
3mmは0.099寸です。
まとめ
- 位置引数 (positional argument)
- 引数の順番によって値が決定されます。
- 位置引数は関数の定義文で指定された引数と対応します。
- 引数のデフォルト値を指定しない場合、引数が必須となります。
- キーワード引数 (keyword argument)
- 引数の名前で値が決定されます。
- キーワード引数は位置引数の後ろに指定します。
- 引数のデフォルト値を指定しない場合、引数が必須となります。
- デフォルト引数 (default argument)
- 引数にデフォルト値を指定することができます。
- 引数が省略された場合、デフォルト値が使用されます。