こんにちは!ぼりたそです!今回は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であり痩せ気味の傾向です
終わりに
以上で関数の解説とさせていただきます。どうでしょうか?少し難しかったのではないでしょうか?最初は大変なので簡単な関数から定義してみるのがオススメです。慣れたらどんどん高度にしていき、自分だけの最強関数を創造してみましょう!