コンテンツ

Pythonインタラクティブガイド - ステップ3 関数 (1) - 関数の基本 (1)

シリーズ - Pythonインタラクティブガイド
Info
  • 本講座「Pythonインタラクティブガイド」は、手を動かしながらPythonプログラミングの基礎を学べるインタラクティブな講座です。
  • 「スタイルガイド」では、Pythonで読みやすくきれいなコードを書くためのガイドライン(PEP8)を主に紹介しています。
  • 各コード例はその場で実行して結果を確認できます。
    ページ再読み込みで元に戻るので、自由に試してみてください。

前回までは「ステップ2 制御フロー」として、条件分岐やループなどの制御構造について学びました。
今回からは「ステップ3 関数」として、コードを再利用可能な部品として整理する方法について学んでいきます。

プログラムが大きくなってくると、同じような処理を何度も記述することになります。
そのようなときに便利なのが関数です。
関数を使うと、一連の処理をひとまとめにして名前をつけ、必要なときに呼び出すことができます。

関数は以下のように定義します:

関数の定義
def 関数名(): 関数の処理
  • def キーワードで関数を定義します
  • 関数名の後に括弧 () を付け、コロン : で終わります
  • 関数の本体は、インデント(字下げ)されたブロックに記述します
  • 関数の命名規則は 変数の命名規則と同じ以下です:
    1. 文字(a-z, A-Z, …)、数字、アンダースコア(_)で構成できます
    2. 数字で始めることはできません
    3. 予約語(if, for, whileなど)は使えません

また、定義された関数は以下のように呼び出して実行することができます:

関数の呼び出し
関数名()
  • 定義された関数は、関数名の後に括弧 () を付けて呼び出します
スタイルガイド: 関数の定義
  • トップレベルの関数の定義は、前後に2行の空行を入れましょう
    • 関数内の関数の定義など、トップレベルでない(インデントされている)ケースでは、1行の空行を前後に入れます
    • グループ分けを明示するために空行を追加することも可能です
  • 関数名は、その機能が明確な名前を使用しましょう
  • Pythonでは、関数名は小文字のスネークケース(単語をアンダースコアで区切る命名法)を使用するのが一般的です
📚練習問題

以下のセパレータ("=" * 30)出力を関数化して、同じ出力が行われるプログラムを作成しましょう。

解答例

次にセパレータをイコール(=)からハイフン(-)に変更してみましょう。

解答例

関数を使うと以下のようなメリットがあります:

  1. コードの再利用: 同じ処理を何度も書く必要がなくなります
  2. 保守性の向上: 処理内容を変更する場合、関数の定義だけを修正すれば良くなります
  3. 可読性の向上: 処理に名前をつけることで、コードの意図が明確になります

関数内部で定義される変数のことをローカル変数といいます。
逆に、外部で定義されている変数のことをグローバル変数といいます。

ローカル変数はグローバル変数に影響を与えません:

変数がどこからアクセスできるかを決める「変数の有効範囲」のことをスコープといいます。
スコープに関して、後ほど詳しく解説します。

関数は処理結果を戻り値 (return value) として返すことができます。
戻り値は return 文を使って指定します。

関数の定義 (戻り値あり)
def 関数名(): 関数の処理 return 戻り値
関数の呼び出し (戻り値あり)
変数名 = 関数名() # 戻り値を変数に代入する

return文が実行された時点で関数の処理は終了します。
その後ろにコードがあっても実行されないことに注意してください。

return文は複数使用することもでき、条件によって戻り値を変えることができます:

return文は実行時に関数の処理を終了するため、上記コードは以下のように書き換えることも可能です:

return 文がない場合、または戻り値の指定がない return 文では、 None が返されます

return文では、カンマ(,)を使用して複数の値を同時に返すことができます。

関数の定義 (複数の戻り値)
def 関数名(): 関数の処理 return 戻り値1, 戻り値2, ...
  • 実際にはタプルを返しています
    (タプルの作成方法で見たように、タプルの括弧は省略可能です)
  • アンパックを使用して、戻り値を別々の変数に代入できます
関数の呼び出し (複数の戻り値)
変数名1, 変数名2, ... = 関数名()

上記プログラムでは、長方形の幅と高さが関数内で固定されています。
様々なパターンの長方形に対する計算を行うためには、次節で紹介するパラメータを使用します。

📚練習問題

関数内で定義されたリストの最小値と最大値を同時に返す関数を作成して、
最小値と最大値をそれぞれ画面出力しましょう。

解答例

関連記事