プログラミングにおいて「関数」は、コードを整理し、再利用性を高めるための重要な仕組みです。
本記事では、Python初心者向けに関数の定義方法から呼び出し、引数と戻り値の扱い方まで、具体例を交えてわかりやすく解説します。
最後には演習問題と解答例も用意していますので、ぜひ手を動かしながら理解を深めてください。
関数の定義(def)
関数とは「一定の処理をまとめて名前を付けたもの」です。
何度も使いたい処理を関数として定義しておくことで、コードの再利用性が向上し、可読性も高まります。
Pythonで関数を定義するには、defキーワードを使います。基本の書式は次のとおりです。
def 関数名(引数1, 引数2, ...):
"""関数のドキュメンテーション文字列(省略可)"""
処理1
処理2
...
return 戻り値
関数名
は英字・数字・アンダースコアで命名し、数字から始めてはいけません。引数
はカンマで区切って複数指定できます。引数が不要なら空の括弧 () でもOK。- return を省略すると、戻り値は自動的に None になります。
def greet():
print("Hello, Python!")
上記のように引数なしでも定義できます。
関数の呼び出し
定義した関数を使うには、関数名と括弧を組み合わせて呼び出します。
greet() # Hello, Python! と出力される
引数がある場合は、括弧内に値を渡します。
def greet_name(name):
print(f"Hello, {name}!")
greet_name("Alice") # Hello, Alice!
呼び出し時の注意点
- 引数の数と順序は関数定義と合わせること
- キーワード引数(name=”Bob”)も使える
引数の基本
位置引数(Positional Arguments)
呼び出し時に順序どおり渡す引数。最も基本的な方法です。
def add(a, b):
return a + b
result = add(3, 5) # 8
キーワード引数(Keyword Arguments)
名前を指定して渡すことで順序を自由にできます。
result = add(b=5, a=3) # 8
デフォルト引数(Default Arguments)
あらかじめデフォルト値を設定しておくことで、呼び出し時に省略可能にできます。
def power(base, exponent=2):
return base ** exponent
print(power(4)) # 4**2 = 16
print(power(2, 3)) # 2**3 = 8
可変長引数
引数の個数が呼び出しごとに異なる場合、*args や **kwargs を使います。
*argsは、位置引数をタプルとして受け取り、**kwargsは、キーワード引数を辞書として受け取ります。
def sum_all(*args):
total = 0
for num in args:
total += num
return total
print(sum_all(1, 2, 3, 4)) # 10
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=30)
戻り値(return)
関数は処理結果を戻り値として返せます。複数の値を返す場合はタプルとしてまとめられます。
def divide(a, b):
quotient = a // b
remainder = a % b
return quotient, remainder
q, r = divide(7, 3)
print(f"商: {q}, 余り: {r}") # 商: 2, 余り: 1
戻り値が不要なら return 自体を省略できますが、処理終了を明示するために return None と書くこともあります。
ドキュメンテーション文字列(Docstring)
関数の使い方や引数・戻り値の説明は、三重引用符で囲んだ文字列(Docstring)に記載します。IDEや help() で参照可能です。
def greet(name):
"""名前を受け取って挨拶を表示する関数
Args:
name (str): 挨拶する相手の名前
Returns:
None
"""
print(f"Hello, {name}!")
演習問題
以下の演習問題に取り組んでみましょう。実際にコードを書いて動作を確認してください。
問題1
整数 n を受け取り、1 から n までの整数の和を返す関数 sum_to_n(n) を定義してください。
問題2
リストを受け取り、要素を逆順にした新しいリストを返す関数 reverse_list(lst) を定義してください。元のリストは変更しないこと。
問題3
キーワード引数で渡された任意のキーと値のペアを、次の形式で1行ずつ表示する関数 display_kwargs(**kwargs) を定義してください。
キー: 値
解答例
# 問題1
def sum_to_n(n):
"""1 から n までの和を返す"""
total = 0
for i in range(1, n + 1):
total += i
return total
print(sum_to_n(10)) # 55
# 問題2
def reverse_list(lst):
"""リストを逆順にして返す"""
return lst[::-1]
original = [1, 2, 3, 4]
reversed_list = reverse_list(original)
print(reversed_list) # [4, 3, 2, 1]
print(original) # [1, 2, 3, 4]
# 問題3
def display_kwargs(**kwargs):
"""渡されたキーワード引数をキー: 値 の形式で表示"""
for key, value in kwargs.items():
print(f"{key}: {value}")
display_kwargs(name="Alice", age=30, country="Japan")
# 実行結果:
# name: Alice
# age: 30
# country: Japan
まとめ
- 関数の定義:def キーワードと return を使って整理された処理をまとめる
- 呼び出し:関数名+括弧で実行。引数の数・順序に注意
- 引数の種類:位置引数、キーワード引数、デフォルト引数、可変長引数
- 戻り値:return で値を返す。複数値はタプル
- Docstring:関数の説明を記述し、可読性・保守性を向上
関数をマスターすると、コードが読みやすくなり、再利用性も高まります。まずは基本を押さえて、実際に手を動かしてみましょう!