コードを書く上では、関数の理解は必須になります。
使わなくても、簡単な短いコードであればなんとかなりますが、コード量が多いと同じ処理を何回も使いたい場合があります。
そんな場合には、関数を使うと便利です。
是非ここで関数の使い方を理解していきましょう。
本記事の内容
- 関数とは
- 関数の使い方
関数とは
関数は「機能を1つにまとめ、複数回使う時に使いやすくしたもの」です。
・処理がわかりやすく、コードが読みやすい
関数のイメージは次のようになります。
引数:関数で処理するのに必要な変数
返り値:関数で処理した結果
関数では、引数や返り値が必要ですが、両方ともなくても良いですし、複数あっても良いです。
これは開発者が都合の良いように作ります。
例えば、BMIの計算を行う関数を考えてみましょう。
引数には、計算に必要なtall(身長)とweight(体重)を入れて、関数の処理結果としてBMIの値を受け取ります。
図だけだとイメージしにくと思いますので、後ほどコードで説明します。
関数の記述
では、どうやって関数を作れば良いのでしょうか?
関数を作るとき
関数の記述の仕方から見ていきましょう。次のようになります。
if文、for文と同じでインデント(余白)が必要で、タブ若しくはスペース4つが推奨です。
・関数名は小文字にしましょう
・関数名が長くなる場合、「_」とかで区切ってわかりやすくしましょう
関数を使うとき
関数を使うときは次のような記述になります。
関数名を書いて()に引数を入れるだけです。
関数の中に数十行の複雑な処理が書いてあったとしても、1行で使えるようになるわけです。
また、関数にすることで処理を機能ごとにパーツに分けるかのように小分けにできるので、コードの再利用性、読みやすさがグンと上がります。
実際に使ってみよう
記述ルールみただけではイメージがしにくいので、BMIの計算を関数化してみたいと思います。
BMI関数をつくる
# bmiを計算する関数 def calc_bmi(tall, weight): bmi = weight / tall / tall return bmi
引数:tall, weight
返り値:bmi
となっています。
関数1行前の#***はコメントです。最初に「#」をつけることでコードとして使われないようになります。
BMI関数を使う
関数が作れたので、早速この関数を使っていきます。
bmi = calc_bmi(1.7, 70) print(bmi)
出力結果
24.221453287197235
これで使えました。
他にも、関数宣言時の引数名を添えて使うこともできます。
# 引数名を添えて実行 bmi = calc_bmi(tall=1.7, weight=70) # 引数の順番を逆にしても大丈夫 bmi = calc_bmi(weight=70, tall=1.7)
引数名を添える場合は引数は順番通りじゃなくても良い
他にもいくつかのパターンを見ていきましょう。
返り値がない場合
処理をさせるだけして、結果を何も受け取らないということはよくあります。
BMIの計算でやってみましょう。
返り値はなく、そのままBMIを表示するコードにします。
# bmiを計算し、表示する関数 def calc_bmi(tall, weight): bmi = weight / tall / tall print(bmi) # 実行 calc_bmi(1.7, 70)
出力結果
24.221453287197235
関数の中で結果を出力するように変更しました。
返り値がある方とない方とどちらかが良いというわけではないので、わかりやすい、使いやすい方で書いてください。
返り値が複数の場合
返り値が複数の場合もたくさんあります。
例えば、BMIと一緒に肥満度も返すようにしてみます。
# 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)
出力結果
24.221453287197235
普通
27.68166089965398
肥満
どうでしょうか?BMIだけより肥満度があった方がより便利な関数になったのではないでしょうか?
この関数で、肥満度を受け取りたくない場合は、「_」で省略することが可能です。
bmi, _ = calc_bmi(1.7, 70) print(bmi)
最後に
関数について理解が深まったでしょうか?
最初にコードを書いていると、数十行とコードを書いてしまいがちですが、長くなってきたと感じたら、機能ごとに関数化できないか見直してみましょう。
コメントを残す