Pythonの関数-呼び出しと作成

記事の内容

 この記事では、Pythonで関数を呼び出して利用する方法と、関数作成方法の基本について説明します。
 関数の利用はプログラミングの実用に欠かせません。覚えることがたくさんありますが、いくつかの記事に分けてシリーズで説明していきます。初心者の方は関数を自在に使いこなせるように頑張りましょう!!

***わからない用語があるときは索引ページへ***

1.関数とは

 関数とは、特定の機能を提供するためのプログラムを外に切り出したものです。特定の機能を外に切り出すことによって、
■呼び出して何度でも利用できる
■別ファイルのプログラムからも呼び出すことができる
■プログラム本体を読みやすくできる
■バグ修正が簡単にできる
などの利点があります。

2.関数を呼び出す

 関数の呼び出しは、

<関数名>(<引数1>, <引数2>,・・・)

の形式で呼び出します。
 引数というのは、関数に渡すデータのことをいいます。引数は、「パラメータ」とよぶこともあります。
 どの型のデータを、どういう順番で、いくつ渡すか、は関数を作成するときに定義されますので、関数の種類によって決まります。
 引数をとらない関数もあります。引数をとらない関数を呼び出すときは、

<関数名>()

で呼び出します。関数を呼び出して実行するときは、引数がなくても()を省略することはできません。
 print関数で見てみましょう。

x = 3
print("x = ", x)

出力結果

x = 3

print関数は、引数をコンソールに出力する関数です。複数の引数を渡した場合は、引数と引数を半角スペースで区切って出力します。
 まとめると、

関数名:print
引数:任意の型のデータを1つ以上指定できる

となります。

---以下、補足---
関数の()を省略すると、関数を呼び出して実行するのではなく、全く別の意味に解釈されます。詳細は「Pythonのデコレータ」の記事を参照ください
---補足ここまで---

3.値を返す関数を呼び出す

 数学で習った関数のように、指定された引数を関数で処理し、処理結果を返すこともできます。
 イテラブルオブジェクトを引数にとって、要素の最大値を返すmax関数の使い方をみてみましょう。

list1 = [0, 1, 2, 3, 4, 5]
print("list1:", list1)

max_elem = max(list1)
print("max_elem =", max_elem)

出力結果

max_elem = 5

 このサンプルプログラムのmax関数は、引数として渡されたlist1の要素の最大値5を返しています。これを変数max_elemに代入し、print関数で出力しています。
 値を返す関数の呼び出しは、処理結果を変数に代入することもできますし、変数と全く同じように扱うこともできます。

print("max_elem =", max_elem)

は、

print("max_elem = ", max(list1))

と書いても同じ動きをします。
 つまり、「値を返す関数の呼び出しは、関数の戻り値データの変数(オブジェクト)として扱うことができる」となります。

 Pythonの組み込み関数の一覧については、公式ページにまとめられています。

4.関数を作成する

 次に、自分で関数を作る方法について説明します。
 自作関数の作成は、

def <関数名>(<引数1の変数>, <引数2の変数>, ・・・):
    <プログラムブロック(関数の中身)>

の形式で記述し、定義します。
 引数定義の()の後に":"(コロン)を記述します。
 まずは簡単なサンプルプログラムをみてみましょう。

##func_ex1.py

##引数xとyを足し算して演算結果を返す
def tashizan(x, y):
   wa = x + y
   
   return wa

wa = tashizan(3, 5)
print("3 + 5 =", wa)

出力結果

3 + 5 = 8

1つずつ規則を説明していきます。

 関数は、defで始まり、defの次の行からのプログラムブロックで中身を記述しています。

 "func_ex1.py"では、足し算の結果を返しています。値を返すときは、

return <返すデータ>

の形式で記述します。
 "func_ex1.py"では、足し算の結果であるwaを返しています。

 関数は、呼び出されるまで実行されません。また、呼び出す前に定義されている必要があります。
 "func1_ex1.py"でも、呼び出す前に定義されています。また、呼び出されたときにはじめて関数が実行されています。

 関数を呼び出すときに関数に渡す引数は、defの()の中の変数に、順番に引き渡されます
 "func1_ex1.py"では、

wa = tashizan(3, 5)

で呼び出されています。この時に指定した引数の3と5は、

def tashizan(x, y):

のxとyに順番に渡されるので、xには3が、yには5が渡されます。
---以下、補足---
関数の引数の定義や設定方法は、他にもいろいろな方法があります。
これらの引数の定義の仕方や渡し方については、続きの記事で説明しています。
---補足ここまで---

5.関数名について

 関数名に使える文字は、前に説明した変数名と同じです。したがって日本語の関数名もつけることができますし、記述ルールにさえ従っていればプログラムとしては正常に動きます。
 しかし、変数名にしろ、関数名にしろ、一貫性のない名づけをすると、プログラムが読みづらくなってしまいます。
 Pythonでは、標準ライブラリ(組み込みオブジェクトの総称)のプログラムを書くにあたって、PEP8(Python Enhancement Proposal 8)でコーディング規約(書き方のルール)をまとめています。
 PEP8では、関数名とメソッド名は英数小文字でつける、単語と単語の間を"_"(アンダースコア)で区切る、となっています。以降の記事でも、この規則にしたがった関数名を使っていきます。
 本格的なプログラムを作成したり、作成したプログラムを一般公開したりする場合は、PEP8の規約に従った書き方を心がけると良いでしょう。

次の記事




この記事が気に入ったらサポートをしてみませんか?