Pythonでは、関数に引数を渡す際に 「名前を指定して引数を渡す」方法 を使うことができます。これを「名前付き引数(キーワード引数 / keyword arguments)」と呼びます。
複数の引数がある関数でも、どの引数にどの値を渡すのかが明確になるため、コードの読みやすさ・メンテナンス性が向上します。
名前付き引数(キーワード引数)とは?
def greet(name, message):
print(f"{name}さん、{message}")
greet("Taro", "こんにちは")
このように 位置(順番)で引数を渡す方法を「位置引数」と呼びます。
一方、次のように引数名を明示して渡す方法が「名前付き引数(キーワード引数)」です。
greet(name="Taro", message="こんにちは")
使用例:ミリメートルを変換する関数
例:単位を変換する関数
def henkan(mm_number, length):
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(mm_number=1, length="inch")
henkan(mm_number=2, length="cm")
henkan(mm_number=3, length="寸")
出力結果
1mmは0.03937inchです。
2mmは0.2cmです。
3mmは0.099寸です。
ポイント
henkan(mm_number=1, length="inch")
のように、どの引数にどの値を渡しているかが明確。- 順番を間違えても動作するので、バグの予防にもつながります。
補足:デフォルト引数との組み合わせ
関数定義時に、デフォルト値を指定することで、引数の省略も可能になります。
def greet(name="ゲスト", message="こんにちは"):
print(f"{name}さん、{message}")
greet()
greet(message="おはよう")
結果
ゲストさん、こんにちは
ゲストさん、おはよう
補足2:可変長の名前付き引数(**kwargs)
不特定多数のキーワード引数を受け取りたいときは、**kwargs
を使います。
def show_info(**kwargs):
for key, value in kwargs.items():
print(f"{key} : {value}")
show_info(name="Taro", age=20, city="Tokyo")
結果
name : Taro
age : 20
city : Tokyo
まとめ:名前付き引数はこんなときに使おう!
シーン | 名前付き引数が役立つ理由 |
---|---|
引数が多い関数を扱うとき | 値と引数の関係が明確になる |
引数の順番を間違えやすいとき | 引数の順序に依存せずに記述できる |
関数を読みやすく・メンテしやすくしたいとき | 可読性・保守性の向上につながる |