関数を作ってみよう

前回、組み込み関数を使ってみました。関数は組み込みのもの以外にプログラマが自身で作成することが可能です。

独自に関数を作る方法

初歩的な関数は以下の構文で作成することができます。「関数の処理はこうしますよ」という処理を記述するのですが、こういった記述を関数の定義とも呼びます。実際、defは英語のdefine(定義する)の略からきています。

def 関数名(引数1, 引数2, ・・・):
    処理
    return 戻り値

関数を作る際はdefで宣言をします。また、関数名に続く括弧で引数と呼ばれる変数を定義します。もっとも、これだけだと何のことかわからないと思いますので、具体的な例をみて学習しましょう。

まず、比較的簡単な関数、「引数で指定した2つの数字を足す」処理を作ってみます。

def add2numbers(x, y):
    z = x + y
    return z

関数名としてadd2numbersという名前を付けました。2数の引数はx, yという名前を付けています。また、x + y を計算してzに格納し戻り値として返しています。

せっかく関数を作ったので使ってみましょう。呼び出し方は組み込み関数のときと同様です。以下は作った関数add2numbersを使用して2と3の和を求めています。

def add2numbers(x, y):
    z = x + y
    return z

ans = add2numbers(2, 3)
print(ans)    # 和の5が表示される

さて、2数を足すだけだと今までどおり関数を使わないプログラムでもいいじゃないか、と思う方もいるのではないでしょうか?
実際、簡単な処理を1回実行するならば関数を使わなくてもいいのですが、関数を使用すると複雑な処理が1回書いただけで何回も使いまわすことができるようになります

上の関数では和を戻り値として返しましたが、戻り値のない関数も作ることができます。例えば、以下のコードは「引数で受け取った2数の和をprint出力する関数」です。戻り値は必ずしも必要というわけではありません

def add2numbers(x, y):
    z = x + y
    print(z)

add2numbers(2, 3)    # 和の5が表示される

Pythonは他のプログラミング言語と比較して関数の機能が強力で、様々な書き方が存在します。興味がある方は是非入門編へ勉強を進めてください。

演習

演習問題1

3つの数を足す関数を作成してください。また、作成した関数を任意の引数で3回呼び出してください。

解答例

def add3numbers(x, y, z):
    w = x + y + z
    return w

# 1回呼び出し
ans1 = add3numbers(1, 3, 5)
print(ans1)    # 9

# 2回呼び出し
ans2 = add3numbers(2, 4, 6)
print(ans2)    # 12

# 3回呼び出し
ans3 = add3numbers(3, 5, 7)
print(ans3)    # 15

演習問題2

引数で指定した数値のリストを足し上げる関数を作成してください。また、作成したプログラムを呼び出してください。

解答例

def mysum(numberlist):
    sum_val = 0
    for x in numberlist:
        sum_val = sum_val + x
    return sum_val

l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ans = mysum(l)
print(ans)     # 55