Pythonで「関数」を使いこなせると、同じ処理を何度も書く必要がなくなり、プログラム全体の構造がスッキリして可読性が大きく向上します。
今回は、Pythonにおける関数の基本的な構文規則や設計の流れをはじめ、コードの保守性を高めるための実務的なテクニックについてわかりやすく解説します!
関数の基本構文と3つの構成要素
Pythonでは、「def」というキーワードを用いて関数を定義します。基本的な構文形式は以下のようになります。
def 関数名(引数):
実行したい処理
return 戻り値
- 関数名: どのような処理を行うのかがひと目で理解できる名称を設定します(Pythonの標準的な命名規則では、小文字のスネークケース(例:snake_case)を用います)。
- 引数: 処理を実行するために「外部 from 受け取るデータ(入力値)」の形にします。省略することも可能です。
- 戻り値: 関数内の処理結果として、呼び出し元へ返却するデータ(出力値)です。
関数の設計手順と段階的な実装例
シンプルな構成から順を追って、引数や戻り値を追加しながら関数の組み立て方を確認していきましょう。
最もシンプルな関数の定義と呼び出し
まずは、特定のメッセージを画面に出力するだけの最小構成の関数です。
def say_hello():
print("こんにちは!")
# 関数の呼び出し(実行)
say_hello()
引数を受け取る関数の実装
呼び出し元から引数としてデータを受け取り、動的に処理内容を変化させる実装です。
def greet(name):
print(f"{name}さん、こんにちは!")
# データを渡して実行
greet("田中")
greet("佐藤")
戻り値を返す関数の実装
計算や加工の処理結果を呼び出し元へ戻り値として返し、後続の処理で再利用できるようにします。実務において最も活用される形式となります。
def add_numbers(a, b):
result = a + b
return result # 処理結果を返却
# 関数を実行し、結果を変数で受け取る
total = add_numbers(3, 5)
print(f"合計は {total} です")
少し難しい内容になってきましたが、ここで重要な点はあくまでreturnです。
returnによって処理結果を関数の呼び出し元へ返しています。そのため、returnを省略することはできません。
ただし、「return a + b」のようにresultという変数への格納は省略可能です。
関数導入による保守性と可読性の改善効果
同一の処理を関数化することで、コードの重複が排除され、修正時の手戻りや人的ミスを大幅に抑制できます。消費税額の計算処理を例に比較してみましょう。
関数を使用しない場合の課題
同様の計算ロジックが各所に重複して現れるため、税率変更などの仕様改定が発生した際に、すべての記述箇所を個別に修正する必要が生じます。
price1 = 1000
tax1 = price1 * 0.1
total1 = price1 + tax1
print(f"支払額: {total1}円")
price2 = 2500
tax2 = price2 * 0.1
total2 = price2 + tax2
print(f"支払額: {total2}円")
関数を活用した場合の改善効果
計算ロジックを一箇所に集約できます。もし税率変更や端数処理の仕様変更が生じた場合でも、関数内部の定義を一箇所修正するだけで全体の挙動を一括で更新できます。
def calculate_total(price, tax_rate=0.1):
tax = price * tax_rate
return int(price + tax)
# 呼び出すだけで計算完了
print(f"支払額: {calculate_total(1000)}円")
print(f"支払額: {calculate_total(2500)}円")
実務で役立つ関数の高度な活用テクニック
チーム開発や中長期的な保守運用において、コードの信頼性を高めるための重要な記法をご紹介します。
デフォルト引数による柔軟な呼び出し
引数にあらかじめ初期値を設定しておくことで、呼び出し時に引数を省略した場合は既定値が自動的に適用されます。頻繁に使用される標準設定がある場合に有効です。
型ヒントによる可読性と保守性の向上
Pythonはデータ型を明示しなくても動きますが、引数や戻り値の想定データ型を明示する型ヒント(Type Hints)を記述することで、エディタによる補完機能が強化され、コードの可読性が向上します。
def add_numbers(a: int, b: int) -> int:
return a + b
Docstringによる関数の仕様定義
関数定義の直下に三重引用符(”””)を用いたドキュメンテーション文字列(Docstring)を配置することで、関数の目的や仕様を詳しく記載できます。
def multiply(a: float, b: float) -> float:
"""
2つの数値を掛け合わせて積を返す関数です。
"""
return a * b
ちなみに、#でコメントアウトできるのは1行のみですが、”””だと複数行まとめてコメントアウトすることが可能です!
おわりに
関数を設計して活用することにより、複雑で長大なプログラムであっても、小さな機能単位の組み合わせとして見通しよく整理できるようになります。
まずは、よく使う計算や定型文の出力を関数化してみることから始めてみてください!
Pythonの本は種類が多すぎて、業務効率化に使えるのか見分けるのが大変ですよね。実務自動化に5年以上携わってきた私が、「デスクワークの自動化に即戦力になった本」を厳選して紹介します。失敗しない1冊を見つけたい方は、ぜひ参考にしてみてください。

コメント