1. はじめに
Pythonで関数を定義するとき、引数にデフォルト値を設定することで、関数をより柔軟に、簡潔に使えるようになります。
本記事では「Python|関数の引数にデフォルト値を設定する方法」をテーマに、基本的な使い方から応用的なパターンまで、実行例を交えて解説します。
関数定義におけるデフォルト引数の意味、使いどころ、よくあるエラーまでしっかりカバーします。
2. Pythonの関数におけるデフォルト引数の基本
2.1 デフォルト引数とは?
デフォルト引数とは、関数を定義する際に引数にあらかじめ値を設定しておく方法です。
関数呼び出し時にその引数を省略すると、設定されたデフォルト値が使用されます。
2.2 基本構文と例
以下が基本的な構文と実行例です。
def greet(name="ゲスト"):
print(f"こんにちは、{name}さん!")
greet() # 引数なしで呼び出し
greet("佐藤") # 引数ありで呼び出し
実行結果:
こんにちは、ゲストさん!
こんにちは、佐藤さん!
このように、name
引数にデフォルト値「ゲスト」が設定されているため、引数を省略してもエラーにならず、柔軟に使えます。
3. よくある使い方・応用例
3.1 よくある使用場面
デフォルト引数は、オプションの設定や条件付きの処理などに便利です。
たとえば、ログ出力処理や設定ファイルの読み込みなど、初期値がある処理に活用されます。
3.2 複数の引数の組み合わせ
def introduce(name, age=20, city="東京"):
print(f"{name}さんは{age}歳で、{city}に住んでいます。")
introduce("田中")
introduce("山田", 30)
introduce("鈴木", city="大阪")
実行結果:
田中さんは20歳で、東京に住んでいます。
山田さんは30歳で、東京に住んでいます。
鈴木さんは20歳で、大阪に住んでいます。
このように、必要な引数だけを渡すことで、関数呼び出しの自由度が高まります。
3.3 ミューテブル(可変)なデフォルト値の注意点と代替案
def add_item(item, items=[]):
items.append(item)
return items
print(add_item("A"))
print(add_item("B"))
実行結果:
['A']
['A', 'B']
意図せず前回のリストが引き継がれてしまいます。
このような場合、デフォルト値をNone
にして、関数内で処理するのが安全です。
def add_item_safe(item, items=None):
if items is None:
items = []
items.append(item)
return items
print(add_item_safe("A"))
print(add_item_safe("B"))
実行結果:
['A']
['B']
4. 注意点・エラー対策
4.1 デフォルト引数は「右側から順番に」設定する
デフォルト値を設定する引数は、通常の引数より右側に配置しないとエラーになります。
# 間違った定義
def sample(a=1, b):
print(a, b)
実行結果:
SyntaxError: non-default argument follows default argument
このような構文エラーになるため、必ず「通常引数 → デフォルト引数」の順に記述しましょう。
4.2 可変オブジェクトをデフォルトに使うリスク
先述のように、リストや辞書などの可変オブジェクトはデフォルト値に使わないのが基本です。
関数が呼び出されるたびに前回の状態が残ってしまい、意図しないバグの原因になります。
5. まとめ
- 関数の引数にデフォルト値を設定することで、省略可能な柔軟な関数が作れる
- デフォルト引数は通常の引数より右側に記述する
- リストや辞書のような可変オブジェクトは直接デフォルトに使わず、
None
と条件分岐で対応
デフォルト引数の理解は、読みやすく保守性の高いコードを書くための第一歩です。
特に実務では、設定ファイルの読み込み、ログ処理、API設計など、さまざまな場面で役立ちます。
ぜひ日頃のPythonコードに積極的に取り入れてみてください!