Python

Python – ⑧ 関数

 前回まででPythonの基本構文を一通り終えました。ここからはプログラミングの核であるといってもいい『関数』についてです。関数とは似たような処理を何回もするときに使える再利用可能な命令のことです。以前『print()』や『len()』という関数を先取りしましたが、これらはPythonに元から標準で付属しているものです。しかし関数は自分で新しいものを作ることができ、その点で革新的だといえます。では早速やっていきましょう!

 

最も簡単な関数

 関数とは先に述べた通り再利用が可能です。関数には4タイプあるのですが、まず初めに最も簡単なタイプを定義する方法を紹介します。

 

書式
>>> def 関数名():
□□□□処理

 

 『def』は『define(定義する)』の略で、関数を定義する際に用いられます。『def』の次に1つスペースを空けて好きなように関数名を名付けます。『関数名』の後には必ず『( )』(カッコ)と『:』(コロン)がいります。コロンのところで改行し、ここでも四文字分インデント(スペースを空けること)をしてください。インデントを入れたら処理を書きます。

 

>>> def func():
print('Hello, world!')
 
>>> func()        #①
'Hello, world!'

 

 関数を実行するときには関数名+『( )』を書いてエンターを押します。

 

引数をとる関数

 2つ目のタイプは『引数』(ひきすう)をとる関数です。引数はパラメーターともいい、引数の値によって関数の結果が変わります。

 

書式
>>> def 関数名(引数):
引数を用いた処理

 

 引数は1つでも複数個でも可能です。抽象的な説明だとわかりにくいので具体例を見てみましょう。

 

>>> def circle(r):        #①
s=r*r*3.14
print('半径',r,'の円の面積=',s)
 
>>> circle(3)        #②
'半径 3 の円の面積= 28.26'
>>> circle(5)        #③
'半径 5 の円の面積= 78.5'

 

 まず『r』という引数をとる関数『circle()』を定義します(①)。その中の処理は半径『r』の円の面積を『s』に代入して、それらを『print()』で出力するというものです。実際に②のところで『r=3』として『circle()』の処理が行われます。結果として円の面積は3×3×3.14=『28.26』になっているのです。③のところも同じように『r=5』となっていますから面積は5×5×3.14=『78.5』になります。

 

 なお、関数「circle()」は引数を1つとると定義したので、使うときに引数の過不足があってはいけません。厳密には3や5などの具体的な値を『実引数』、関数を定義するときにとりあえず設定する『r』のようなもじを『仮引数』(=パラメーター)といいます。

 

返り値を持つ関数

 3つ目のタイプは返り値を持つ関数です。返り値とは関数が最終的に導き出す値のことです。

 

書式
>>> def 関数名():
処理
return

 

 『処理』が終わったところで『return』で『値』を導き出します。

 

>>> def add():        #1⃣
a=2
b=5
return a+b        #2⃣
 
>>> add()        #3⃣
7
>>> 6+add()        #4⃣
13
>>> add()*8        #5⃣
56

 

 ここで定義した関数『add()』(1⃣)は『a+b』という値を返します(2⃣)。ここでは『a=2』、『b=5』なので『a+b』の値は7であり、返り値は7ということになります。『add()』単独で実行すると値は7ですが(3⃣)、4⃣・5⃣ではそれぞれほかの数字と計算をしていてきちんと正しい値になっています。

 

 もしも『return』の部分を抜かすとその関数は返り値を持たないことになりますので他の数字と計算をすることはできません。先ほど紹介した『最も簡単な関数』と『引数をとる関数』も返り値を持たない関数です。

 

 なお、返り値に設定できるのは数字だけではなく、文字・リスト・辞書型も可能です。

 

引数と返り値を持つ関数

 最後の4タイプ目の関数は引数も返り値も持つものです。

 

書式
>>> def 関数名(引数):
処理
return

 

 かたち的には『引数を持つ関数』と『返り値を持つ関数』を合体させただけです。実例を見てみましょう。

 

>>> def profile(name,age):        #❶
return name+':'+str(age)+'歳'        #❷
 
>>> print(profile('田中',40))
'田中:40歳'

 

 関数『profile()』は『name』と『age』という2つの引数をとります(❶)。引数は複数でもよいというのは既にやりました。❷の部分の『str()』は数字などを文字列に変換する関数です。返り値は文字列なので『print()』で出力しています。

 

 どうでしたか。4種類の関数を使いこなして複雑なプログラムを今後も書いていきましょう!ありがとうございました!