Pythonの引数の使い方!デフォルト引数・可変長引数・キーワード引数の違い
先生と生徒の会話形式で理解しよう
生徒
「Pythonの関数で引数っていろいろな種類があるみたいですが、違いがよく分かりません…」
先生
「引数には、デフォルト引数・可変長引数・キーワード引数といった種類があります。それぞれ特徴や使い方が違いますよ。」
生徒
「なんだか難しそうですが、順番に教えてもらえますか?」
先生
「もちろんです。順に例を交えながら説明しますね!」
-
1. デフォルト引数とは?
デフォルト引数とは、関数の引数にあらかじめ値を設定しておき、省略された場合にその値を使う仕組みです。例えば、あいさつ文を出力する関数で、名前を指定しなければ「ゲスト」と表示するようにできます。
def greet(name="ゲスト"):
print(f"こんにちは、{name}さん!")
greet()
greet("太郎")
こんにちは、ゲストさん!
こんにちは、太郎さん!
デフォルト引数を使うと、引数が省略されたときの挙動を簡単に指定できます。
2. 可変長引数(*args)とは?
可変長引数は、受け取る引数の数が決まっていない場合に使います。関数の定義で引数名の前に*を付けると、複数の値をタプルとして受け取れます。
def show_items(*items):
for item in items:
print(item)
show_items("りんご", "みかん", "バナナ")
りんご
みかん
バナナ
これにより、引数の数が不定のときでも柔軟に対応できます。
3. キーワード引数(**kwargs)とは?
キーワード引数は、引数名と値をペアで受け取る仕組みです。引数名の前に**を付けると、複数の名前付き引数を辞書型として受け取れます。
def show_profile(**info):
for key, value in info.items():
print(f"{key}: {value}")
show_profile(name="太郎", age=20, city="東京")
name: 太郎
age: 20
city: 東京
辞書型で受け取れるので、柔軟なデータ構造をそのまま関数に渡せます。
4. 引数の組み合わせ
デフォルト引数・可変長引数・キーワード引数は、同じ関数で組み合わせて使うこともできます。ただし、引数の並び順には注意が必要です。
- 通常の引数
- デフォルト引数
- 可変長引数(
*args) - キーワード引数(
**kwargs)
def order(item, quantity=1, *extras, **options):
print(f"商品: {item}, 数量: {quantity}")
print("追加オプション:", extras)
print("詳細設定:", options)
order("コーヒー", 2, "ミルク", "砂糖", size="L", temperature="hot")
商品: コーヒー, 数量: 2
追加オプション: ('ミルク', '砂糖')
詳細設定: {'size': 'L', 'temperature': 'hot'}
このように組み合わせることで、複雑な注文や設定もシンプルに記述できます。
-
5. 初心者が覚えるべきポイント
- デフォルト引数は省略時の値を設定できる
- 可変長引数(
*args)は複数の値をまとめて受け取れる - キーワード引数(
**kwargs)は辞書型で名前付きデータを受け取れる - 引数の順番に注意(通常 → デフォルト → *args → **kwargs)
これらを理解すれば、関数をより柔軟に使いこなせるようになります。