Pythonインタラクティブガイド - ステップ3 関数 (1) - 関数の基本 (1)
- 本講座「Pythonインタラクティブガイド」は、手を動かしながらPythonプログラミングの基礎を学べるインタラクティブな講座です。
- 「スタイルガイド」では、Pythonで読みやすくきれいなコードを書くためのガイドライン(PEP8)を主に紹介しています。
- 各コード例はその場で実行して結果を確認できます。
ページ再読み込みで元に戻るので、自由に試してみてください。
前回までは「ステップ2 制御フロー」として、条件分岐やループなどの制御構造について学びました。
今回からは「ステップ3 関数」として、コードを再利用可能な部品として整理する方法について学んでいきます。
ステップ3 関数
プログラムが大きくなってくると、同じような処理を何度も記述することになります。
そのようなときに便利なのが関数です。
関数を使うと、一連の処理をひとまとめにして名前をつけ、必要なときに呼び出すことができます。
3.1. 関数の基本
3.1.1. 関数の定義と呼び出し
関数は以下のように定義します:
def
キーワードで関数を定義します- 関数名の後に括弧
()
を付け、コロン:
で終わります - 関数の本体は、インデント(字下げ)されたブロックに記述します
- 関数の命名規則は 変数の命名規則と同じ以下です:
- 文字(
a-z
,A-Z
, …)、数字、アンダースコア(_
)で構成できます - 数字で始めることはできません
- 予約語(
if
,for
,while
など)は使えません
- 文字(
また、定義された関数は以下のように呼び出して実行することができます:
- 定義された関数は、関数名の後に括弧
()
を付けて呼び出します
- トップレベルの関数の定義は、前後に2行の空行を入れましょう
- 関数内の関数の定義など、トップレベルでない(インデントされている)ケースでは、1行の空行を前後に入れます
- グループ分けを明示するために空行を追加することも可能です
- 関数名は、その機能が明確な名前を使用しましょう
- Pythonでは、関数名は小文字のスネークケース(単語をアンダースコアで区切る命名法)を使用するのが一般的です
以下のセパレータ("=" * 30
)出力を関数化して、同じ出力が行われるプログラムを作成しましょう。
解答例
次にセパレータをイコール(=
)からハイフン(-
)に変更してみましょう。
解答例
関数を使うと以下のようなメリットがあります:
- コードの再利用: 同じ処理を何度も書く必要がなくなります
- 保守性の向上: 処理内容を変更する場合、関数の定義だけを修正すれば良くなります
- 可読性の向上: 処理に名前をつけることで、コードの意図が明確になります
3.1.2. ローカル変数とグローバル変数
関数内部で定義される変数のことをローカル変数といいます。
逆に、外部で定義されている変数のことをグローバル変数といいます。
ローカル変数はグローバル変数に影響を与えません:
変数がどこからアクセスできるかを決める「変数の有効範囲」のことをスコープといいます。
スコープに関して、後ほど詳しく解説します。
3.1.3. 戻り値(return
文)
関数は処理結果を戻り値 (return value) として返すことができます。
戻り値は return
文を使って指定します。
return
文が実行された時点で関数の処理は終了します。
その後ろにコードがあっても実行されないことに注意してください。
return
文を複数使用するケース
return
文は複数使用することもでき、条件によって戻り値を変えることができます:
return
文は実行時に関数の処理を終了するため、上記コードは以下のように書き換えることも可能です:
None
を返すケース
return
文がない場合、または戻り値の指定がない return
文では、 None
が返されます
複数の値を同時に返すケース
return
文では、カンマ(,
)を使用して複数の値を同時に返すことができます。
上記プログラムでは、長方形の幅と高さが関数内で固定されています。
様々なパターンの長方形に対する計算を行うためには、次節で紹介するパラメータを使用します。
関数内で定義されたリストの最小値と最大値を同時に返す関数を作成して、
最小値と最大値をそれぞれ画面出力しましょう。