[Python] 関数を使ってコードを見やすくしよう!

皆さんこんにちは。
本日は関数に関してお話していきたいと思います。




Today's Contents



皆さんも“関数”という単語を一度は耳にしたことがあるのでは?
中学校や高校の数学ででてきました。



当時は、
f(x) = ax + b
と表現していたかと思います。
例えば、以下の問題を解いてみてください。

x = 3のとき、以下を求めよ。
f(x) = 2x + 5

答えは11です。言葉で説明すると・・・

f(x)という関数は、2x+5という計算式で成り立っており、
x=3を代入すると f(3) = 2*3 + 5の計算式が成り立つ。
右辺の式を計算すると11が求められるので、f(3) = 11 となる。

というものです。
実はPythonにおける関数も上記と同じ原理で成り立っています。


【関数を利用するメリット】
・同じコードを何度も書かなくてよい
・処理の内容がわかりやすくなる
・修正が1箇所で済む
が挙げられます。

実際に関数とはどういったものなのか、
書き方や内容を解説します。


基本的な記述方法は以下です。

def 関数名(引数名1, 引数名2, ...):
   処理
   return 返り値

~関数名~
任意の名前をつけます。
どんな処理をしている関数なのかわかりやすい名前が良いでしょう。
上記の例では「f」が関数名にあたります。

~引数名(ひきすうめい)~
任意の名前をつけます。
なんの値なのかわかりやすい名前が良いでしょう。
上記の例では「x」が引数名にあたります。

~返り値~
「戻り値」と表現したりもします。
実際に関数が動いた際に返却される値です。
上記の例では、2x+5が返り値にあたります。

if文やfor文同様に、インデントで処理から返り値のブロックを判別します。
インデントの入れ忘れに注意してください。


半径から円の面積を求めるコードを例に紹介します。
・関数を利用しない場合
・関数を利用する場合
のそれぞれでコードを記載してみたいと思います。

【関数を利用しない場合】
radius1 = 5
area1 = 3.14 * radius1 ** 2
print(f"半径{radius1}cmの面積: {area1}cm²")

radius2 = 7
area2 = 3.14 * radius2 ** 2
print(f"半径{radius2}cmの面積: {area2}cm²")

radius3 = 10
area3 = 3.14 * radius3 ** 2
print(f"半径{radius3}cmの面積: {area3}cm²")



何度も同じような表現が出てきてめんどくさいですね。

【関数を利用する場合】
def calculate_circle_area(radius):
   return 3.14 * radius ** 2

radii = [5, 7, 10]
for r in radii:
   area = calculate_circle_area(r)
   print(f"半径{r}cmの面積: {area}cm²")



for文も併せて活用することで、
とてもコンパクトにまとまりました!


先ほどの円周率の例で、円周率を3.14 → 3.141592に変更してみましょう。

【関数なし】
3箇所修正が必要
area1 = 3.14 * radius1 ** 2
area2 = 3.14 * radius2 ** 2
area3 = 3.14 * radius3 ** 2

【関数あり】
1箇所修正で完了
return 3.14 * radius ** 2

とても簡単に修正することができました!
今回は短いコードでしたので修正箇所がわかりやすかったですが、
長いコードになるにつれて、修正箇所を探すことが難しくなります。

目安としてですが、2回以上同じ処理が入るのであれば関数を用いることにしましょう。
※何よりまずは関数になれることが重要です!
ぜひ関数を使ってコードを見やすくしていきましょう!!

本日はここまで。
お疲れ様でした!

コメント