Python

Pythonの関数とその定義

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の値が保存されています。

途中経過を書き出しておくことは、エラーの原因をつきとめるにあたって重要になります。
エラーがわからなければ、関数の途中で変数を書き出したりして、場所をつきとめましょう。