LoginSignup
0
1

More than 3 years have passed since last update.

[光-Hikari-のPython]06章-01 関数(組み込み関数と関数の定義)

Last updated at Posted at 2020-06-13

[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)と思っていただいて構いません。

samp06-01-01.py
def greet_func():
    print('関数内で実行しています')
    print('こんにちは!')

さて、上記を実行してください。

【実行結果】
 

実際に実行すると何も表示されません。今回のgreet_func関数を定義しただけでは、意味をなさず、「greet_func関数を動かしてください」といった呼び出す処理は別に指示する必要があります。

先ほどのプログラムに以下を追加してください。

samp06-01-01.py
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関数を呼び出します。」と出力しています。

そして、以下のフローチャートのように、関数を呼び出し、関数内の処理が終わると呼び出し元に戻り、通常通りの処理が始まり、「関数内の処理は終了しました!」と出力されています。
image.png

複数の関数の作成

関数を複数作成することもできます。以下のコードを入力してください。chap06フォルダの中に、samp06-01-02.pyというファイル名でファイルを作成し、以下のコードを書いてください。

06-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関数内の処理が実行されます。

以下に今回の処理内容をフローチャートでまとめてみました。(今回、関数内部の処理は割愛しております。)

image.png

最後に

今回は関数という、どのプログラミング言語でも登場する概念について触れました。関数は今まではすでに準備してある関数(組み込み関数)を使うものと思っていたかもしれませんが、実は自作することもできるのです。
今回触れた関数は、単純なものですが、次回は少し深く触れてみたいと思います。

【目次リンク】へ戻る

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1