横浜国立大学理工学部建築都市環境系学科卒
一級鉄筋技能士
コードを書く上では、関数の理解は必須になります。
使わなくても、簡単な短いコードであればなんとかなりますが、コード量が多いと同じ処理を何回も使いたい場合があります。
そんな場合には、関数を使うと便利です。
是非ここで関数の使い方を理解していきましょう。
この記事では、関数の返り値が複数ある場合の記述の仕方まで説明します。
目次
関数とは?
pythonコードには関数が多数登場します。
まずは、関数について理解しましょう。
関数は「機能を1つにまとめ、複数回使う時に使いやすくしたもの」
関数は「機能を1つにまとめ、複数回使う時に使いやすくしたもの」です。
・同じ処理を複数書かなくてよく、コードがすっきりする、開発しやすくなる
・処理がわかりやすく、コードが読みやすい
関数のイメージは次のようになります。
引数:関数で処理するのに必要な変数
返り値:関数で処理した結果
関数では、引数や返り値が必要ですが、両方ともなくても良いですし、複数あっても良いです。
これは開発者が都合の良いように作ります。
引数(必要な変数)と返り値(結果)のイメージ
引数、返り値が少しとっつきにくい場合は具体例でイメージしましょう。
例えば、BMIの計算を行う関数を考えてみます。
引数には、計算に必要なtall(身長)とweight(体重)を入れて、関数の処理結果(返り値)としてBMIの値を受け取ります。
図だけだとイメージしにくいと思いますので、後ほどコードで説明します。
関数を記述しよう
では、どうやって関数を作れば良いのでしょうか?
関数の記述の仕方 defとreturnをセットで記述する
関数の記述の仕方から見ていきましょう。次のようになります。
if文、for文と同じでインデント(余白)が必要で、タブ若しくはスペース4つが推奨です。
・関数名には内容がわかりやすく、想像できる英語を使いましょう
・関数名は小文字にしましょう
・関数名が長くなる場合、「_」とかで区切ってわかりやすくしましょう
返り値=関数(引数)で関数を使用する
関数を使うときは次のような記述になります。
関数名を書いて()に引数を入れるだけです。
関数の中に数十行の複雑な処理が書いてあったとしても、1行で使えるようになるわけです。
また、関数にすることで処理を機能ごとにパーツに分けるかのように小分けにできるので、コードの再利用性、読みやすさがグンと上がります。
関数を実際に使ってみよう
記述ルールを見ただけではイメージしにくいので、BMIの計算を関数化してみたいと思います。
BMIを計算する関数を作ってみる
1 2 3 4 |
# bmiを計算する関数 def calc_bmi(tall, weight): bmi = weight / tall / tall return bmi |
引数:tall, weight
返り値:bmi
となっています。
関数1行前の#***はコメントです。
最初に「#」をつけることでコードとして使われないようになります。
BMIを計算する関数を使ってみる
関数が作れたので、早速この関数を使っていきます。
1 2 |
bmi = calc_bmi(1.7, 70) print(bmi) |
1 2 3 |
出力結果 24.221453287197235 |
これで使うことができました。
他にも、関数宣言時の引数名を添えて使うこともできます。
1 2 3 4 |
# 引数名を添えて実行 bmi = calc_bmi(tall=1.7, weight=70) # 引数の順番を逆にしても大丈夫 bmi = calc_bmi(weight=70, tall=1.7) |
引数は「 引数名= 」と引数名を添えるとわかりやすい
引数名を添える場合は引数は順番通りじゃなくても良い
他にもいくつかのパターンを見ていきましょう。
return返り値がない場合はprint関数で結果を出力しても良い
処理をさせるだけして、結果を何も受け取らないということはよくあります。
BMIの計算でやってみましょう。
返り値はなく、そのままBMIを表示するコードにします。
1 2 3 4 5 6 7 |
# bmiを計算し、表示する関数 def calc_bmi(tall, weight): bmi = weight / tall / tall print(bmi) # 実行 calc_bmi(1.7, 70) |
1 2 3 |
出力結果 24.221453287197235 |
関数の中で結果を出力するように変更しました。
返り値がある方とない方とどちらかが良いというわけではないので、わかりやすい、使いやすい方で書いてください。
返り値が複数の場合
返り値が複数の場合もたくさんあります。
例えば、BMIと一緒に肥満度も返すようにしてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# bmiと肥満度を計算する関数 def calc_bmi(tall, weight): bmi = weight / tall / tall himan = "" if bmi>=25: himan = "肥満" elif 18.5<=bmi<25: himan = "普通" else: himan = "低体重" return bmi, himan # 実行 bmi, himan = calc_bmi(1.7, 70) print(bmi) print(himan) bmi, himan = calc_bmi(1.7, 80) print(bmi) print(himan) |
1 2 3 4 5 6 |
出力結果 24.221453287197235 普通 27.68166089965398 肥満 |
どうでしょうか?
BMIだけより肥満度があった方がより便利な関数になったのではないでしょうか?
この関数で、肥満度を受け取りたくない場合は、「_」で省略することが可能です。
1 2 |
bmi, _ = calc_bmi(1.7, 70) print(bmi) |
まとめ
関数について理解が深まったでしょうか?
最初にコードを書いていると、数十行と長いコードを書いてしまいがちです。
長くなってきたと感じたら、機能ごとに関数化できないか見直してみましょう。