pythonでは独自の関数を作って、それを使うことが可能です。
例えば、最大値を自動的に見つけ出してくれる関数を一度定義していれば、簡単に何度でも最大値を見つけることができるようになります。
この記事では、Pythonで関数を定義する方法と、その関数をどのようにして使うかをサンプルコードとともに具体的に解説していきます。
関数の定義と呼び出しの概要
関数を定義する方法は簡単で次のように記述するだけです。
def 関数名(引数1, 引数2):
<処理>
return 返り値
上のように記述することで独自の関数が定義できます。
関数に引数1
と引数2
を渡す(与える)ことで、返り値
を出力してくれます。
関数名
には半角英数で独自の好きな名前をつけられます。引数
と返り値
は関数の内容によってはあってもなくても大丈夫です。
これらに関しては実例を見た方が理解が早いので、以下にいくつかサンプルを載せます。
引数はあるが、返り値はない例
def print_number(number):
print(number)
print_number(5) # 出力結果 → 5
このサンプルコードは、引数はあるが返り値はない例です。
1-2行目でprint_number(number)
という関数を定義しており、定義した後に print_number(5)
と記述することで関数を呼び出しています。number
にあたる部分が5
になるので、5
という数字がターミナルに出力されます。
引数も返り値もない例
def print_number2():
print(3)
print_number2() # 出力結果 → 3
このサンプルコードは、引数も返り値もない例です。
1-2行目でprint_number2()
という関数を定義しており、print_number2()
と記述することで3
をprintしてくれます。
決まったテキストを何度も表示させたい場合は、このサンプルのような記述を使うのもいいですね。
引数も返り値もある例
def sum_number(num1, num2):
sum = num1 + num2
return sum
sum_value = sum_number(4, 3)
print(sum_value) # 出力結果 → 7
# または print( sum_number(4, 3) ) と記述しても良い
このサンプルコードは、引数も返り値もある例です。
1-3行目でsum_number(num1, num2)
という関数を定義しており、sum_value = sum_number(4, 3)
と記述することで返り値の7
をsum_value
に渡しています。sum_value
に7
が渡っているので、print(sum_value)
と記述することで7
がターミナルに出力されます。
最大値を見つける関数 (サンプルコードあり)
上では簡単な例ばかりだったので、もう少しだけ実践的な例を以下に記します。
各月の平均気温の数値データが格納されたcsvファイルを読み込み、その中の最大気温を取り出す処理を実行するサンプルです。
復習はこちら→ データファイルを読み込む方法、プログラムを実行する方法
サンプルコード
# averaged temperature in 2018 @ Kyoto city
# 01: month 02: averaged temperature in the daytime
1,3.9
2,4.4
3,10.9
4,16.4
5,20.0
6,23.4
7,29.8
8,29.5
9,23.6
10,18.7
11,13.5
12,8.2
import numpy as np
def search_max(data_array):
max_value = -100.0
for line in data_array:
if max_value <= line:
max_value = line
return max_value
data_file = 'AvrgTmp_Kyoto2018.csv'
ave_temperature = np.loadtxt(data_file, delimiter=',', usecols=(1), unpack=True)
max = search_max(ave_temperature)
print("max value is " + str(max))
コードの解説
for line in data_array:
「data_array
という配列から要素を一つずつ取り出しては、以下の処理を行う。」という記述です。
if max_value <= line:
line
には配列の一要素が順々に入ります。 「もし、配列の一要素がmax_value
よりも大きかったら次の処理を行う」という記述です。
max_value = line
max_value
よりもline
が大きかったら「max_value
にline
の数値を格納する」という記述です。
これにより、最終的にmax_value
に入っている値が最大値となります。
プログラムを実行しよう
上記のサンプルコードを実行してみましょう。Desktop/Dr.code/python/data-analysis/def_function
にAvrgTmp_Kyoto2018.csv
を保存しておきます。
次にターミナルを開いて、cdでcwdをDesktop/Dr.code/python/data-analysis/def_function
にして、実行します。
(→やり方がわからない方はプログラムを実行する方法を参考にしてください。)
出力結果
ターミナルで以下のように記述し、returnキーを押すとターミナルにmax value is 29.8
と出力されます。
python search_max.py
最後に
もし余力があれば、最小値を出力するコードも書いてみましょう。
最大値を見つける関数の中を少し変えるだけでできますし、勉強になるので是非トライしてみてください。