関数の作成

Python で関数オブジェクトを定義する際に def コマンドを利用する。平均や分散などを計算する際に、NumPy や SciPy で用意されたメソッドを利用すればよいが、独自のアルゴリズムで計算したい場合などは、関数を一からつくり上げる必要がある。

基本的な作り方

関数は、def に続いて関数名とコロンを書き、その次の行をインデントし、関数の処理を書く。例えば、2 つの引数(xy)を受け取り、その差を返す関数は次のように作成する。ただし、関数は dis とする。

def dis(x, y):
    sa = x - y
    return(sa)

自作した関数 dis は以下のように利用する。

dis(30, 10)
## 20

# 引数の名前を明示すれば、順序を入れ替えても可能
dis(y = 10, x = 30)   
## 20

関数を利用するにあたって、引数が足りないときにエラーが発生する。例えば、dis 関数の場合、2 つ目の引数 y を省略すると、以下のようなエラーが発生する。

dis(30)
## Traceback (most recent call last):
##   File "<stdin>", line 1, in <module>
## TypeError: dis() missing 1 required positional argument: 'y'

x が省略されたときに 30 を代入し、また y が省略されたときに 0 を代入するように設定することができる。

def dis(x = 30, y = 0):
    sa = x - y
    return(sa)


dis(20)
## 20

dis()
## 30

再帰処理

関数の中で自分自身を呼び出すことを再帰という。再帰を必要とする処理には、例えばフィボナッチ数列を計算するアルゴリズムなどがあげられる。

def fib(n):
    if n > 1:
        return fib(n - 1) + fib(n - 2)
    else:
        return 1

fib(5)
## 8