関数

正直なところ関数とはなにか?真っ正面から疑問に立ち向かうと、なかなか答えがられないという現実に直面しています…ですが、数学における関数をイメージしていただければそれほど間違っていないと思います。

z = f (x, y)

ここで学習すること

  • 関数

サンプルコード

sample01.py

#!/usr/bin/env python3.8

import sys

def add(x, y):
    return x + y

argv = sys.argv

try:
    a = int(argv[1])
    b = int(argv[2])
    c = add(a, b)
    print("result: " + str(c))
except Exception as ex:
    print(ex)

sample02.py

#!/usr/bin/env python3.8

import sys

def add(x, y):
    return x + y

try:
    print(add(1, 2))
    print(add("1", "2"))

except Exception as ex:
    print(ex)

説明

冒頭にも述べましたが、数学における関数をイメージしていただければ問題ないかと思います。数学における関数とは、1つ以上の変数を与えると内部で処理した結果として戻り値を返すという動作をします。

サンプルプログラムの例は説明の必要もないと思いますが、2つの値を与えると、足し算をした結果を返します。

なかには、明示的な戻り値を返さない関数もあります。例えばprint()で画面に表示するだけで明示的な値を返さないなどもその一例だと思います。その場合でも実はNoneという値を返しています。

Noneとは「値がない」を意味する値なので、実際には何も返していないということでもあります。「リンゴが0個あります。」みたいな感じで。

def add(x, y):

defキーワードから始めます。続いて関数名と()で引数を囲います。型にうるさい割に引数の型は特に指定しません。:で終わり、次行からのブロックで関数定義を行います。

    return x + y

return文は必須ではありませんが、戻り値を持たせたいときにはこのように値を返します。

実行

まずはsample01.pyからです。

$ python sample01.py 1 2
result: 3
$ 

やってみるまでもない何の変哲もない結果です。

次に、型にうるさい割にといいましたが、それを示す例としてsample02.pyを実行してみます。

$ python sample02.py
3
12
$ 

なんともまぁ。冷静に考えると当たり前ですが大真面目に実行してくれちゃいました。型にうるさいですし、型 intで説明の通り忖度もありません。注意が必要ですね。