関数: 再利用可能なコード
def で定義。*args/**kwargs で柔軟に。
def
関数を定義するキーワード。
*args
可変長位置引数。
**kwargs
可変長キーワード引数。
関数基礎
Pythonの関数は `def` で定義します。コードの重複を避けるための基本単位です。Pythonでは関数も「オブジェクト」として扱われるため、変数に入れたり、他の関数に渡したり(高階関数)できるのが特徴です。
def greet(name: str) -> str: """挨拶を返す""" return f"Hello, {name}!"
# デフォルト引数def greet(name: str = "World") -> str: return f"Hello, {name}!"
# キーワード引数greet(name="Alice")Bad
# ❌ Bad: 可変オブジェクトをデフォルトにdef add_item(item, items=[]): items.append(item) return items
add_item(1) # [1]add_item(2) # [1, 2] 前回のが残ってる!Good
# ✅ Good: None を使うdef add_item(item, items=None): if items is None: items = [] items.append(item) return items高度なパターン
# *args と **kwargsdef flexible(*args, **kwargs): print(args) # タプル print(kwargs) # 辞書
flexible(1, 2, a=3, b=4)# (1, 2)# {'a': 3, 'b': 4}
# ラムダ(無名関数)square = lambda x: x ** 2
# 関数を返す関数def multiplier(n): return lambda x: x * n
double = multiplier(2)double(5) # 10 Tip: デフォルト引数に可変オブジェクト(リスト等)は使わない。
合格ライン
*args と **kwargs を使える
デフォルト引数の罠を知っている
演習課題
課題1: 関数定義
引数と戻り値を持つ関数を作成してください。
課題2: デフォルト引数
デフォルト引数の罠を避けて関数を作成してください。