こんにちは!ぼりたそです!今回はPythonの関数について記事をまとめてみました。
この記事は以下のポイントでまとめています。
- 関数とは?
- 関数の創造
- 関数の引数
- 関数の返り値
Pythonでは普段様々な関数を使っていますが、関数とは実は自分でも作り出せるのです。なので、Pythonのデフォルトで定義された関数以外にも自分が欲しい機能を持った関数を創造し、使いこなしていきましょう!
関数とは?
Pythonにおける関数とは何なのか?それは引数を入力することである一定の処理を実行してくれる機能のことを言います。代表的なのはprint関数ですね。print関数は文字列または関数を引数として入力することで、その値を出力してくれる機能を持っています。
print関数はPythonのデフォルトで定義されている関数ですが、関数は自分でも定義することが可能です。そのため、自分の欲しい関数がなければ、創り出せばいいのです。
以降、関数について詳細に解説していきます。
関数の創造
まず、関数を創り出すにはどのような処理を実行する関数なのかを定義する必要があります。定義するには以下のような形式で記述する必要があります。defは定義を意味するdefineであり「:」によりブロック化する必要があります。
def 関数名():
処理
関数の定義
では、実際に簡単な関数を定義してみましょう。以下に示すのは呼び出せばいつも励ましてくれる関数を記述したコードになります。
#自分を励ましてくれるコード
def encourage():
print('お疲れ!今日も生き抜いたね。すごいよ、マジで。')
#関数の呼び出し
encourage()
#出力結果
#お疲れ!今日も生き抜いたね。すごいよ、マジで。定義した関数を呼び出しただけで今日を生き抜いた自分を励ましてくれるのです。素晴らしい関数ですね。
注意点として、関数名にPythonにデフォルトで定義してある関数名を使用すると関数が上書きされてしまうので注意して下さい!
関数の引数
関数の定義には引数を設定することも可能です。設定方法としては下記に示す通りになります。
def 関数名(引数):
処理
引数の設定
実際に引数を含んだ関数を例を用いて説明していきます。関数の定義でご紹介した自分を励ますコードですが、パターンが一つだと何だか味気ないですよね。なので、引数を使用して何パターンか返してくれるように関数を創り直してみます。
#パターンを引数に入力するとそれに応じた励ましの言葉をくれる関数
def encourage(type):
type = type
if type == 'A':
print('お疲れ!今日も生き抜いたね。すごいよ、マジで。')
if type == 'B':
print('今日も辛かったけど、その頑張りが未来につながるはずだ!')
if type == 'C':
print('頑張ってばかりじゃ疲れるだろ?今日はもう休みなって!')
if type == 'D':
print('落ち込んでる暇なんかない!常に今の自分を超えてゆけ!')
#関数の呼び出し
encourage('D')
#出力結果
#落ち込んでる暇なんかない!常に今の自分を超えてゆけ!typeという引数にAからDのいずれかを設定すれば、それに応じて励ましの言葉を投げかけてくれるようになりました!上のコードでは呼び出しの際、引数にDを設定していますね。これで、その日の気分で激励の言葉を変えられますねえ。
ちなみに引数は複数個設定することができ、引数を「,」で区切るように記述して下さい。
引数のデフォルト値
関数の引数にはデフォルト値を設定することもできます。記述としては関数の定義時に引数=デフォルト値といった形式で方法を取ります。
def 関数名(引数=デフォルト値):
処理
以下に先ほどのサンプルコードに引数のデフォルト値を設定してみました。
#パターンを引数に入力するとそれに応じた励ましの言葉をくれる関数
def encourage(type='A'):
type = type
if type == 'A':
print('お疲れ!今日も生き抜いたね。すごいよ、マジで。')
if type == 'B':
print('今日も辛かったけど、その頑張りが未来につながるはずだ!')
if type == 'C':
print('頑張ってばかりじゃ疲れるだろ?今日はもう休みなって!')
if type == 'D':
print('落ち込んでる暇なんかない!常に今の自分を超えてゆけ!')
#関数の呼び出し
encourage()
#出力結果
#お疲れ!今日も生き抜いたね。すごいよ、マジで。デフォルト値をAに設定することで関数の呼び出し時に引数を設定しなくてもパターンAの檄を飛ばしてくれるようになりましたね。
関数の返り値
関数で処理した値をまた別の処理に使用したいなんてこともありますよね。そんな時に使用するのが返り値です。実は関数は返り値の設定をしないと処理するだけして何の値も返してくれないのです。
返り値を設定せずともprint関数を使用して処理値を出力することは可能ですが、変数に代入できるわけではないので関数の実行値を他の処理に使用することはできません。
返り値の設定は以下のように関数の最後に「return 処理値」と記述するだけです。
def 関数名(引数=デフォルト値):
処理
return 処理値
返り値の設定
返り値を利用したコードを具体例を用いて説明します。以下に示すのは身長と体重からBMIを計算する関数です。この関数の返り値を基に今の体重が適正かどうかを判断するコードをご紹介します。
まず、定義している関数はcalc_bmiであり、身長(m)と体重(kg)を引数に設定するとBMIを計算してbmiとして値を返してくれます。
次に実際に関数を呼び出し、実行した値を変数bmiに代入しています。
最後にif文の条件分岐で適正体重かどうかを判定しています。
#BMIを計算して体重が適正か判断するコード
def calc_bmi(height, weight):
h = height
w = weight
bmi = w/(h**2)
return bmi
#関数の呼び出し
bmi = calc_bmi(1.71,64)
#適正体重か判定
if bmi >= 18.5 and bmi < 25:
print(f'BMIは{bmi}であり適正体重です')
if bmi < 18.5:
print(f'BMIは{bmi}であり痩せ気味の傾向です')
if bmi >= 25:
print(f'BMIは{bmi}であり太り気味の傾向です')
#出力結果
#BMIは21.887076365377382であり適正体重ですこのように返り値を設定すれば関数の処理値を使用して他の処理に利用できるということですね。
複数の返り値を設定
返り値も引数同様に複数設定することが可能です。記述は以下のように「,」で区切って下さい。
def 関数名(引数=デフォルト値):
処理
return 処理値1, 処理値2・・・
ただし、注意点として返り値はタプルとして返されるので、一つずつ返り値を参照したい場合は代入する変数も複数個用意しましょう。以下にサンプルコードを示します。
#BMIを計算して体重が適正か判断するコード
def calc_bmi(height1, weight1, height2, weight2):
h1 = height1
w1 = weight1
h2 = height2
w2 = weight2
bmi1 = w1/(h1**2)
bmi2 = w2/(h2**2)
return bmi1, bmi2
#関数の呼び出し
bmi1, bmi2 = calc_bmi(1.71,64,1.86,60)
#適正体重か判定
if bmi1 >= 18.5 and bmi < 25:
print(f'BMI_1は{bmi1}であり適正体重です')
elif bmi1 < 18.5:
print(f'BMI_1は{bmi1}であり痩せ気味の傾向です')
elif bmi1 >= 25:
print(f'BMI_1は{bmi1}であり太り気味の傾向です')
if bmi2 >= 18.5 and bmi < 25:
print(f'BMI_2は{bmi2}であり適正体重です')
elif bmi2 < 18.5:
print(f'BMI_2は{bmi2}であり痩せ気味の傾向です')
elif bmi2 >= 25:
print(f'BMI_2は{bmi2}であり太り気味の傾向です')
#出力結果
#BMI_1は21.887076365377382であり適正体重です
#BMI_2は17.343045438779047であり痩せ気味の傾向ですPythonの関数を問題演習で身につけたい方へ
ここまで、Pythonの関数について、
- 関数の定義
- 引数
- デフォルト引数
- 戻り値
- 複数の戻り値
などを紹介してきました。
関数はPythonを使ううえで非常に重要な文法ですが、
「defの書き方は分かったけれど、自分で関数を作ろうとすると難しい」
「引数と戻り値の違いがまだ少しあいまい」
「どんな処理を関数としてまとめればいいのか分からない」
という方も多いのではないでしょうか。
Pythonの基本文法を実際にコードを書きながら練習したい方向けに、Kindle書籍**『Python 文法演習100問』**を出版しました。
本書では、関数についても1つの章を設け、今回紹介した内容に加えて、
- 引数なしの関数
- 引数を受け取る関数
- 戻り値のある関数
- 複数の引数を受け取る関数
- 複数の戻り値
- デフォルト引数
- キーワード引数
- 文字列を処理する関数
- リストを扱う関数
- 辞書を扱う関数
- 複数人のデータを処理する関数
などを、問題を解きながら段階的に学べるようにしています。
関数を使えるようになると、同じ処理を何度も書かずに済むだけでなく、処理をひとまとまりにして再利用できるようになります。
たとえば、
「点数を受け取って成績を返す」
「商品の価格と税率から税込価格を計算する」
「リストの合計や平均をまとめて求める」
といった処理も、関数としてまとめることでコードを整理しやすくなります。
本書では関数だけでなく、
- 数値・文字列
- リスト
- 辞書
- タプル・集合
- 条件分岐
- 繰り返し処理
- クラス
まで、Pythonの基本文法を全100問の演習形式で扱っています。
各問題では、あらかじめ示された実行結果を確認し、
「この結果を返す関数をどのように作ればよいか」
を自分で考えてコードを作成します。
説明を読むだけではなく、実際に関数を定義して何度も呼び出すことで、Pythonを**「分かる」状態から「自分で使える」状態へ進むこと**を目指した問題集です。
関数は、この後に学ぶクラスや、より大きなプログラムを作るときにも欠かせない考え方です。
そのため、
「関数の基本は分かったので、自分で作る練習をしたい」
「引数や戻り値をしっかり理解したい」
「クラスへ進む前に関数を使いこなせるようになりたい」
という方にもおすすめです。
価格は980円で、Kindle Unlimited対象となっています。
Kindle Unlimited会員の方であれば、追加料金なしで読むことができます。
終わりに
以上で関数の解説とさせていただきます。どうでしょうか?少し難しかったのではないでしょうか?最初は大変なので簡単な関数から定義してみるのがオススメです。慣れたらどんどん高度にしていき、自分だけの最強関数を創造してみましょう!

