#[Python]06章-01 組み込み関数と関数の定義
この章から、関数(Function)について説明していきます。関数はPythonだけでなく、どのプログラミング言語でも登場する概念です。ぜひ押さえておきましょう。
関数というと数学で1次関数や2次関数といったものを中学・高校時代に学んだと思います。例えば以下の2次関数、
f(x) = x^2+3x+4
があったとき、x=2とすると、
f(2) = 2^2+3・2+4
=14
と求めることができました。
プログラムにでも、上記のx=2のように、何か値を入れると、値が返ってくるものを関数として定義することができます。
今回はその関数の作成の方法について見ていきたいと思います。
##組み込み関数
実際に過去に、print関数、int関数、str関数、len関数、sorted関数、range関数などといったものに触れたと思います。実際に見てみましょう。Python Consoleから以下のコードを入力してください。
>>> str = 'hello'
>>> len(str)
5
>>> ls = [1, 2, 3, 4, 5]
>>> len(ls)
5
今はlen関数で説明しましたが、上記のx=2を指定するのと同じで、lenに文字列の変数やリストの変数を入れると、長さ(もしくは要素数)が返ってきます。
len関数だけではないですが、print関数、int関数、str関数、sorted関数、range関数はもともとPythonで用意されている関数です。こういった関数を組み込み関数と言います。
組み込み関数には多種あります。以下のリンクから組み込み関数や使用方法などを確認できます。
https://docs.python.org/ja/3/library/functions.html
なお、関数を使うことをよく**「関数を呼び出す」**ということもあります。
##関数を自作する
先ほど、あらかじめ用意された組み込み関数について触れましたが、関数を自作して使うことも可能です。これを**関数の定義(Definition)**と言います。
関数の定義を使うことで、長いプログラムを役割ごとに部品化することができ、可読性も上がります。
実際に関数を定義するには以下の方法があります。
def 自作関数名(引数):
関数を呼び出した際に実行される処理内容
最初のdefというのは、定義するといったdefinitionの意味で、関数を定義しますといった記載です。
そして自分で作った関数名を定義し、if文やwhile文などのときと同じように**:**(コロン)を付与して、そのあとに関数内の処理内容を記載します。
なお、上記の引数(ひきすう)について、これが先ほどのx=2といった、値を入れる個所です。これについては次回説明したいと思います。
今から関数の例を示しますが、まずは引数なしで説明してみたいと思います。chap06を新たに作成し、その中に、samp06-01-01.pyというファイル名でファイルを作成し、以下のコードを書いてください。簡単に説明すると、あいさつ(greeting)をするための関数(function)と思っていただいて構いません。
def greet_func():
print('関数内で実行しています')
print('こんにちは!')
さて、上記を実行してください。
【実行結果】
実際に実行すると何も表示されません。今回のgreet_func関数を定義しただけでは、意味をなさず、「greet_func関数を動かしてください」といった呼び出す処理は別に指示する必要があります。
先ほどのプログラムに以下を追加してください。
def greet_func():
print('関数内で実行しています')
print('こんにちは!')
print('今からgreet_func関数を呼び出します。')
#greet_func関数を呼び出す
greet_func()
print('関数内の処理は終了しました!')
【実行結果】
今からgreet_func関数を呼び出します。
関数内で実行しています
こんにちは!
関数内の処理は終了しました!
関数は前述した通り、定義しても呼び出さないと意味を成しません。組み込み関数のprint関数やlen関数なども当然ですが、呼び出さないと使うことはできませんよね。それと同じこととなります。今回はオリジナル自作のgreet_func関数を呼び出しています。
基本的に関数は最初に書くことが多いです。実行すると関数の部分
def greet_func():
print('関数内で実行しています')
print('こんにちは!')
を飛ばして、**「今からgreet_func関数を呼び出します。」**と出力しています。
そして、以下のフローチャートのように、関数を呼び出し、関数内の処理が終わると呼び出し元に戻り、通常通りの処理が始まり、「関数内の処理は終了しました!」と出力されています。
##複数の関数の作成
関数を複数作成することもできます。以下のコードを入力してください。chap06フォルダの中に、samp06-01-02.pyというファイル名でファイルを作成し、以下のコードを書いてください。
def morning_func():
print('朝の関数が呼び出されました。')
print('おはようございます!')
def afternoon_func():
print('昼の関数が呼び出されました。')
print('こんにちは!')
def night_func():
print('夜の関数が呼び出されました。')
print('こんばんは!')
#数値を入力する箇所
judge = int(input('朝であれば0、昼であれば1、夜であれば2を入力:'))
if judge == 0:
morning_func()
elif judge == 1:
afternoon_func()
elif judge == 2:
night_func()
else:
print('正しい値を入力してください。')
【実行結果】
朝であれば0、昼であれば1、夜であれば2を入力:2
夜の関数が呼び出されました。
こんばんは!
今回は関数を3つ書きましたが、実際に関数はいくつ書くことも可能です。今回の処理内容は、入力した数値によって、呼び出す関数を変えています。
入力した値が指定した値以外(今回は5としています)が入力されたら、再入力を求められます。
正しい値を入力(今回は2としています)すると、それに見合った関数が呼び出され、関数内で処理がされます。今回は夜の関数(night_func)が呼び出されるので、night_func関数内の処理が実行されます。
以下に今回の処理内容をフローチャートでまとめてみました。(今回、関数内部の処理は割愛しております。)
##最後に
今回は関数という、どのプログラミング言語でも登場する概念について触れました。関数は今まではすでに準備してある関数(組み込み関数)を使うものと思っていたかもしれませんが、実は自作することもできるのです。
今回触れた関数は、単純なものですが、次回は少し深く触れてみたいと思います。
###【目次リンク】へ戻る