【Python】8日目 – 関数について理解する(お弁当箱で例える)

ポイント

プログラミング学習が義務教育でも取り入れられるようになり、ほぼすべての人が避けては通れない時代に突入してしまいました。
基本的にはローコードやノーコードテクノロジーが発達し、個人で隅々まで覚える必要はないとも言えますが、やはり自在に操れればまさに100人力とも言えます。
プログラミングがあなたのやりたい何かに合致した場合、是非100日でサクッと覚えてしまいましょう。
100日でざっくりと基礎を身に着けられるように構成しています。

【Python】環境構築 Windows 10 (エラー対処法も)

Pythonを学ぶべき5つの理由

pandas100日チャンレジはこちら

Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学ぶオンライン講座

関数について

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

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

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

数学大図鑑

と説明できます。

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

例えば

y = f(x)

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

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

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

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

この時のyの値は

y = f(1)

となります。

ここでは

y = f(x)

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

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

数学大図鑑
ポイント

関数は英語で[function]といいます。

もともとは「作用」や「機能」という意味を持っています。

関数をfunctionと呼び始めたのは、ゴットフリート・ライプニッツでした。

引用:Wikipedia

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

ドイツの哲学者、数学者

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

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

組み込み関数と自作関数

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

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

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

冷凍食品→組み込み関数

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

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

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

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

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

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

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

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

ポイント

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

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

自作関数の作り方

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

ポイント

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

ポイント2

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

引数がない場合は空欄で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

が表示されました。

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