読者です 読者をやめる 読者になる 読者になる

Python Works

Pythonで色々プログラミングする

Python入門 - 関数

関数を使う

プログラムをしていると、同じような処理を何度も使うシーンが出てきます。

サンプルコード


print('process A')
print('process B')
print('process C')

print('process A')
print('process B')
print('process C')

 

実行結果


process A
process B
process C
process A
process B
process C

 

 このように、何かひとまとまりの処理を何度か使うような場合、「関数」にすることで、便利に使うことができます。

 

サンプルコード


def funcTest():
    print('process A')
    print('process B')
    print('process C')

funcTest()
funcTest()

 

実行結果


process A
process B
process C
process A
process B
process C

 

関数の最も基本的な書き方は、以下のようになります。

また、関数を使うことを「関数を呼び出す」と言ったりもします。


def 関数名():
    実行したい処理
    実行したい処理
    ・・・

 

引数 

関数を呼び出すときに、関数内で使うオブジェクトを関数に渡すことができます。つまり、渡すオブジェクトによって関数の処理を変えることができます。

 

次のサンプルを見てみましょう。

サンプルコード


def funcTest(value):
    if(value < 0):
        print('do not calc')

    else:
        print('calc')
        print(10 * value - 5)

funcTest(5.5)
funcTest(-3)

 

実行結果


calc
50.0
do not calc

 

このように、関数に渡すオブジェクトのことを「引数(ひきすう)」と言います。聞きなれない言葉だと思いますが、「ふーん、そういう用語なんだ」と考えておけばいいと思います。

 引数は、たくさん渡すこともできます。

サンプルコード


def funcTest(value, a, b):
    if(value < 0):
        print('do not calc')

    else:
        print('calc')
        print(a * value - b)

funcTest(5.5, 10, -5)
funcTest(30, -5.5, 10)

 

実行結果


calc
60.0
calc
-175.0

 

引数には、どのようなオブジェクトでも渡すことができます。しかし、正しく処理できないオブジェクトを渡すと、プログラムを実行したときにエラーになってしまいます。

サンプルコード


def funcTest(value, a, b):
    if(value < 0):
        print('do not calc')

    else:
        print('calc')
        print(a * value - b)

funcTest(5.5, '10', -5)

 

実行結果 


calc
Traceback (most recent call last):
  File "XXXX.py", line 9, in 
    funcTest(5.5, '10', -5)
  File "XXXX.py", line 7, in funcTest
    print(a * value - b)
TypeError: can't multiply sequence by non-int of type 'float'

 

「ファイルXXXX.pyの9行目の"funcTest(5.5, '10', -5)"の中の、"print(a * value - b)"でエラーが発生した」という話の後に、「can't multiply sequence by non-int of type 'float」 ということで、掛け算ができないよというエラー内容になります。

関数の引数は正しく処理できるものを渡すようにしましょう。(ただし、実行中にエラーが発生した場合の対策として、例外処理があります。別の記事で解説することになると思います)

 

return文

今まで見てきた関数のサンプルでは、一度関数の処理が終わると、元の処理にただ戻るだけでした。しかし、関数で処理した結果を元の処理に返したいシーンもあります。j例えば、ある計算をする関数で、計算結果を元の処理に返したいような場合です。

Pythonではreturn文を使うことで、オブジェクトを返すことができます。

 サンプルコード


def funcTest(value, a, b):
    print('calc')
    ret = a * value - b
    return ret

ret = funcTest(10, 5, -3.3)
print(ret)

 

実行結果


calc
53.3

 

このように、関数から返ってきたオブジェクトのことを「返り値」とか、「戻り値」と呼びます。

もし、いくつかのオブジェクトを返したいときは、タプルを利用することを検討して見ましょう。

サンプルコード


def funcTest(value, a, b):
    print('calc')
    ret1 = a * value - b
    ret2 = b * value + a
    
    return (ret1, ret2)

ret = funcTest(10, 5, -3.3)
print(ret)

 

実行結果


calc
(53.3, -28.0)

 

それでは、最後に関数の書き方をまとめておきます。


def 関数名(引数1, 引数2, ・・・):
    実行したい処理
    実行したい処理
    ・・・
    return 返り値