pythonには関数という機能があります。
関数って\(f(x) = x^2\)とかですか?
そういうやつだよ。でも数式だけじゃなくていろいろなデータをあつかえるんだ。
中学校の数学ででてきた関数は
\(y = f(x)\)
のように、
数字を入れると数字が出てくるものでした。
Pythonの基本的な関数は
① データを入れる
② 処理をする
③ データを返す
というものです。
①入力データは文字列、数字、関数などどんなものでも入れられます。
②の処理では、計算だけではなく、ファイルを書いたり、画面に出力したりと様々な処理が行えます。
③の出力データも入力データの型によらず、どのような形式もとれます。
非常に汎用性が高いものです。
一般的な関数の形式は
def (変数1, 変数2 ・・):
処理
処理
処理
return 戻り値1, 戻り値2
関数記載の中はインデント(スペース4つまたはタブ)を入れる
という形式で記載します。
関数に入れる変数を 「引数(ひきすう)」
出てくる数を「戻り値」
と呼びます。
例えば
\(f(x_1, x_2) = x_1 \times 2 + x_2\)
という関数を定義するためには
def f(x1, x2):
y = x1 * 2 + x2
return y
x1, x2のところに変数を入れると計算した結果が出てきます。
f(3, 1)
# 7
f(10, -5)
# 15
この式は文字列でも成り立ちますので
f('a', 'b')
# 'aab'
となります。
途中で出力することもできます。
def f2(x1, x2):
y1 = x1 * 3 + x2 * 3
print(y1) #ここで途中経過を出力する
y2 = y1 * 2
return y2
と定義します。
さきほどの文字列を入力します。
answer = f2('a', 'b')
# aaabbb
途中経過のy1の値が出力されています。
print(answer)
# aaabbbaaabbb
変数answerには結果が入っています。
途中でファイル出力することもできます。
def f2(x1, x2):
y1 = x1 * 3 + x2 * 3
# 途中経過yをテキストファイルに保存する
with open('f2_process.txt', 'w') as f:
f.write(y1)
y2 = y1 * 2
return y2
と関数を定義します。
answer = f2('a', 'b')
print(answer)
# aaabbbaaabbb
変数answerにさきほどと同じ結果が入っている一方で、
作業フォルダにはテキストファイルf2_process.txtが作成され、
f2_process.txt
aaabbb
途中経過y1の値が保存されています。
途中経過を書き出しておくことは、エラーの原因をつきとめるにあたって重要になります。
エラーがわからなければ、関数の途中で変数を書き出したりして、場所をつきとめましょう。
エラーがわからなければ、関数の途中で変数を書き出したりして、場所をつきとめましょう。