Python:8日目 – 関数はお弁当箱!?

関数について

数学における関数(英: function)とは、数の集合に値をとる写像の一種であると理解されています。

わかりやすく説明している例としては・・・

ある数を決めると、もう一つの数も決まるのが「関数」

数学大図鑑

と説明できます。

箱をイメージしてください、その箱には、「式」が入っています。

例えば

y = f(x)

という関数があるとします。

数学大図鑑の説明でいうところのxの数字を決めてみましょう。

すると、もう一つのyの数が自動的に決まります。

例えばxに[1]を代入してみます。

この時のyの値は

y = f(1)

となります。

ここでは

y = f(x)

が関数として機能していることがわかります。

関数とは、ある数を入れると、中で何らかの計算をして、その計算結果を返してくれる不思議な入れ物にたとえることができる。

数学大図鑑

関数は英語で[function]といいます。
もともとは「作用」や「機能」という意味を持っています。
関数をfunctionと呼び始めたのは、ゴットフリート・ライプニッツでした。

ゴットフリート・ライプニッツ

Gottfried Wilhelm Leibniz:[1646年7月1日(グレゴリオ暦)/6月21日(ユリウス暦) – 1716年11月14日]

ドイツの哲学者、数学者

ライプツィヒ出身。ルネ・デカルトやバールーフ・デ・スピノザなどとともに近世の大陸合理主義を代表する哲学者です。

主著は、『モナドロジー』、『形而上学叙説』、『人間知性新論』、『神義論』など。

組み込み関数と自作関数

そしてこの便利な入れ物(関数)はPythonの中で標準で提供されているものがあります。

さらに、自作で各プログラム事に関数を定義することもできます。

このようにみると難しそうですが、お弁当箱でイメージしてみると分かりやすいかもしれません。

冷凍食品→組み込み関数

手作りのおかず→自作関数

これまでの過程ではほぼ毎回といっていいほど使ってきた冷凍食品(組み込み関数)が、[print関数]です。

毎回定番の冷凍食品ってみなさんにもありますよね。

しかし、その冷凍食品の作り方やレシピを覚えたり把握したりする必要はありません。

いつ、どんな時にチンしても、必ず毎回同じ味、同じクオリティーで同じものを提供し続けてくれます。

こちらのページでPythonが用意してくれた組み込み関数の一覧を把握することができます。

Pythonの組み込み関数(アルファベット順)

自作の関数はもちろん毎回中身は違いますし、オリジナルの関数はそのまま使いまわすことが可能です。

 

memo

お弁当で例えるならタッパーに入れて冷蔵庫に入れて置くような感覚だと思います。

もちろんプログラミングの自作関数は通常賞味期限はありません。

自作関数の作り方

このような形で作ります。

 

memo

関数の記述が終わればインデントを元に戻しましょう。

()内には引数を入れます。

引数がない場合は空欄でOKです。

まずはコードを書いてみましょう。

def hello():
    print('hello kotaro-marks')

こちらが関数になります。

defの後に関数名を設定。

以降は関数名を呼び出せばアクションを実行できます。

確かめるためにも’hello kotaro-marks’をhello()だけで三回実行してもらいましょう。

def hello():
    print('hello kotaro-marks')



hello()
hello()
hello()

実行結果はこの通りです。

print('hello kotaro-marks')

↑関数を定義しておかないと毎回こちらを打たなくてはいけません。

かなり長いものになってくるとボックス的に定義して使いまわす方が楽ですよね。

引数を使う

def hello(kotaro = 'kotaro-marks'):
    print(kotaro)

hello()

実行結果は[kotaro-marks]が返ってきます。

引数を定義し、空欄で関数を呼び出すと自動的にデフォルト値が利用されます。

上の例では引数の中で代入していました。

しかし当然代入のない引数も使用することができます。

もう少しシンプルに。

def name_func(kotaro):
    print(kotaro)

name_func('marks')
marks

が表示されているはずです。

関数ごと代入

def hello(kotaro = 'kotaro-marks'):
    print(kotaro)

hello()

test = hello
test()

例えばこちらのようにtestに代入して使用してみましょう。

testにhelloを代入して、test()を表示させると、しっかりとkotaro-marksが表示されています。

ポイント

引数空欄で関数を呼び出すと自動的にデフォルト値が利用されます。

代入前のhello()も生きているので、二回表示されていることが確認できます。

足し算をする関数を作成しよう!

def wa(num01, num02):
    print(num01 + num02)

wa(1900, 219000)

ここでは関数名は足し算ということで「和(wa)」としています。

ここまでくれば応用はいくらでもできそうですよね。

いろんな四則演算で関数を作って練習しましょう。

return文

def wa(num01, num02):
    return(num01 + num02)

print(wa(1900, 219000))

return文で返すこともできますが、その際は表示させるプログラムが動いていないため、引数に送る際、同時にprint関数も設置する必要があるので注意しましょう。

return文が実行されるとそこで処理は終了します。

そのため、return文以降の処理は実行されないので覚えておきましょう。

二重()で括るのが見にくいと感じたする場合は、代入してprintすればok です!

例えば

def wa(num01, num02):
    return(num01 + num02)

test = wa(1900, 219000)
print(test)

これで全体を俯瞰的に見やすいコードになりました。

まとめ

4人グループA班の平均値を出す関数

最後にグループAの平均値を出す関数を作ってみましょう。

def agroup(a, b, c, d):
    return(a + b + c + d) / 4

result = agroup(56, 33, 78, 95)
print(result)
65.5

が表示されました。

もちろんクラス単位で関数を作成して例えば学校の先生の業務をより合理化していくことが想定できます。

Kotaro
Kotaro
フォトグラファー, サウンドデザイナー, 投機家。
ドイツで制作したピアノアルバムをリリース後「金田式電流伝送DC録音」専門スタジオにアシスタントとして弟子入りし裏方へ。
現在は独立しKotaro Studioで「誰かのためにただここに在る」をテーマにアルゼンチンタンゴとアメリカの古典音楽の歴史を研究しながらコンテンツを制作中。
小学3年生の頃、読書感想文の賞金である図書券で2冊の投資関連の本を購入したのをきっかけに投資に興味を持つ。
当サイトでは金融の歴史も含め関連するデータやスキルもアーカイブしていきます。
左脳を使うのに疲れたらKotaro Studioの音楽コンテンツも是非ご覧ください。