スマートなプログラムを作るためには、関数を使って同じような処理をまとめる必要があります。
今回は関数の使い方をみていきましょう。
関数の使い方
関数を定義するには、def文を使います。
引数(ひきすう)は、いくつでも設定することができます。
また、関数を定義する側の引数を仮引数、関数を呼び出す側の引数を実引数といいます。
なお、仮引数にはデフォルト値を設定することができます。
デフォルト値は関数を呼び出した時に、実引数を省略した場合に有効になります。
関数内の処理の記述には、インデント(字下げ)をする必要があります。
インデントは一般的に連続した空白4個を使います。
def 関数名(引数1, 引数2=デフォルト値, …):
処理1
処理2
:
関数を書く時の注意点
関数を書く時の注意点は、以下の二つです。
注意ポイント
- 関数の後ろに:(コロン)を付ける。
- 関数内の処理にはインデントを付ける。
関数を使ったプログラム
プログラム内では関数を先に定義して、そのあとに定義した関数を呼び出します。
また、関数は何度でも呼び出すことができます。
以下のプログラムでは、四則演算をする関数funcを定義しています。
仮引数opeは四則演算の種類で、1は足し算、2は引き算、3は掛け算、4は割り算を表しています。
仮引数opeはデフォルト値を1にしているので、関数funcを呼び出す時に3番目の引数を省略した場合は、仮引数opeに1が代入されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def func(val1, val2, ope=1): if ope == 1: print(val1 + val2) elif ope == 2: print(val1 - val2) elif ope == 3: print(val1 * val2) else: print(val1 / val2) func(7, 5) func(4, 1, 2) func(2, 8, 3) func(9, 3, 4) |
1 2 3 4 5 |
> python func1.py 12 3 16 3.0 |
キーワード引数を使う
Pythonでは関数を呼び出す時の実引数に、仮引数名を指定して呼び出すことによって、引数の順番を変えることができます。
関数を呼び出す時に「仮引数名=実引数」とした場合の仮引数名のことをキーワード引数と言います。
キーワード引数を指定することによって、何の引数なのかが分かりやすくなります。
関数の定義側
def func(引数1, 引数2):
関数の呼び出し側
func(引数2=値, 引数1=値)
return文で関数の戻り値を返す
関数はreturn文を使って、戻り値を返すことができます。
なお、return文を呼び出した段階で、関数は終了します。
return 戻り値
return文を使ったプログラムは、以下のようになります。
return文に四則演算の式を渡すと、計算結果が関数の呼び出し元に戻ります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def func(val1, val2, ope=1): if ope == 1: return val1 + val2 elif ope == 2: return val1 - val2 elif ope == 3: return val1 * val2 else: return val1 / val2 print(func(7, 5)) print(func(4, 1, 2)) print(func(2, 8, 3)) print(func(9, 3, 4)) |
1 2 3 4 5 |
> python func2.py 12 3 16 3.0 |
return文で複数の戻り値を返す
,(カンマ)で区切ることによって、戻り値を複数返すこともできます。
関数の定義側
return 戻り値1, 戻り値2, …
関数の呼び出し側
戻り値1, 戻り値2, … = 関数()
以下のプログラムは、4つの戻り値を返します。
1 2 3 4 5 |
def func(arg1, arg2): return arg1+arg2, arg1-arg2, arg1*arg2, arg1/arg2 ret1, ret2, ret3, ret4 = func(10, 5) print(ret1, ret2, ret3, ret4) |
1 2 |
> python func3.py 15 5 50 2.0 |
参考として、Python公式サイト「Pythonの基礎の基礎」へのリンクを貼っておきます。