3.15. 関数作成

3.15.1. 文字列の入力・表示

Pythonの関数の最も簡単な例は下記の通りとなります。

1
2
3
4
 def test_func():
     print ('call test_func')

 test_func()

出力

call test_func

「def」で関数を宣言し、インデントによってブロック化された配下の処理を実行します。上記の例では「test_func」が関数の名前で「()」(カッコ)の中に引数を指定します。 関数の最後には必ず「 : 」(コロン)を付けましょう。

3.15.2. 引数の基礎

先程の関数には引数がありませんでした。今回は引数を設定してみましょう。第一引数と第二引数に数値を、第三引数に四則演算の識別子を指定し、二つの数値を計算させます

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 def test_func(num_1, num_2, oprn):

     if oprn == 1:
         print ('足し算開始')
         print (num_1 + num_2)

     elif oprn == 2:
         print ('引き算開始')
         print (num_1 - num_2)

     elif oprn == 3:
         print ('掛け算開始')
         print (num_1 * num_2)

     elif oprn == 4:
         print ('割り算開始')
         print (num_1 / num_2)

     else:
         print ('不明なオペレーション指定です')


 test_func(100, 10, 3)

出力

掛け算開始
1000

複数の引数を設定する場合は「 , 」(カンマ)で区切ります。上記の例では「100と10の掛け算を行う」というものでした。

3.15.3. 引数の初期値

引数は初期値を指定すると、関数を呼び出す際に省略する事が可能です。今回は第三引数の初期値を「1」と設定し、第三引数の指定無しで呼び出された場合は足し算をするようにしました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
def test_func(num_1, num_2, oprn=1):

    if oprn == 1:
        print ('足し算開始')
        print num_1 + num_2

    elif oprn == 2:
        print ('引き算開始')
        print num_1 - num_2

    elif oprn == 3:
        print ('掛け算開始')
        print num_1 * num_2

    elif oprn == 4:
        print ('割り算開始')
        print num_1 / num_2

    else:
        print ('不明なオペレーション指定です')

test_func(100, 10)

出力

足し算開始
110

もちろん第三引数の指定を行えば、その通りの処理をしてくれます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
def test_func(num_1, num_2, oprn=1):

    if oprn == 1:
        print ('足し算開始')
        print num_1 + num_2

    elif oprn == 2:
        print ('引き算開始')
        print num_1 - num_2

    elif oprn == 3:
        print ('掛け算開始')
        print num_1 * num_2

    elif oprn == 4:
        print ('割り算開始')
        print num_1 / num_2

    else:
        print ('不明なオペレーション指定です')

test_func(100, 10, 4)

出力

割り算開始
10

3.15.4. 関数とメソッド

Pythonでは関数とメソッドがあります。特に意識する必要はありませんが、モジュール内に「def」で定義されているものが「関数」、クラス内に「def」で定義されているものが「メソッド」になります。

1
2
3
4
5
6
7
8
9
# 関数
def test_func():
    print ('call test_func')


class TestClass:
    # メソッド
    def test_method():
        print ('call test_method')