Pythonの引数の使い方!デフォルト引数・可変長引数・キーワード引数の違い
生徒
「Pythonの関数で引数っていろいろな種類があるみたいですが、違いがよく分かりません…」
先生
「引数には、デフォルト引数・可変長引数・キーワード引数といった種類があります。それぞれ特徴や使い方が違いますよ。」
生徒
「なんだか難しそうですが、順番に教えてもらえますか?」
先生
「もちろんです。順に例を交えながら説明しますね!」
1. デフォルト引数とは?(引数の初期設定)
Pythonの関数では、あらかじめ引数に特定の値をセットしておくことができます。これを「デフォルト引数」と呼びます。
通常、関数を呼び出すときは引数に値を渡す必要がありますが、デフォルト引数が設定されていれば、値を渡さなかった(省略した)場合に自動的にその初期値が使われます。
例えば、ネットショップの注文画面で「配送希望日」を入力しない場合に、自動的に「最短でお届け」という設定になるようなイメージです。プログラミング未経験の方でも、以下の「あいさつ」の例を見ると仕組みがすぐに分かりますよ。
# nameという引数に、あらかじめ "ゲスト" という値をセットしておきます
def greet(name="ゲスト"):
print(f"こんにちは、{name}さん!")
# 引数を指定せずに呼び出す(省略する)
greet()
# 引数に自分の好きな名前を指定して呼び出す
greet("太郎")
こんにちは、ゲストさん!
こんにちは、太郎さん!
コードの解説をすると、1回目のgreet()では何も渡していないため、初期設定の「ゲスト」が表示されます。2回目の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)
これらを理解すれば、関数をより柔軟に使いこなせるようになります。