(✿✪‿✪。)ノコンチャ♡
Pythonのプログラミングを学び始め、
プログラミングの楽しさを体感して頂いていますか。
今回から応用編に入ります。
テーマは『関数』です。
関数を作って、
それを実行して、
これが「プログラミング」なんだ!
ということを体験しながら学んでいきましょう。
関数
関数を作ることを『関数定義』といいます。
関数を定義するには、
関数のブロック内に複数の Python の文を記述します。
つまり、
これまで学んできたプログラムの一部に、
関数の名前を付けるような感じです。
ここで話を進める前に復習しておきましょう
文 | プログラム中の一つの処理(代入文、if 文など)。 |
式 | 演算子、式、値、関数呼び出しなどを組み合わせたもの。「文の一部」 |
演算子 | 計算や比較などをする記号。「式の一部」 |
関数 | 複数の文をまとめ、名前を付けて呼び出し可能にしたもの。 |
関数のメリット
関数を作るということは、
プログラムの一部を抜粋し名前を付けることです。
「年齢層を判定す関数」「おつりを計算する関数」のように、
何をしているプログラムかがわかりやすくなります。
つまり、
プログラムの構造を理解しやすくなるメリットがあります。
これまでに学んだ「print 関数」と同様、
何度でも呼び出せます。
そうすることで、
プログラム内で同じ処理を繰り返し記述しないで済みます。
関数の記述
関数を作るには『def(デフ)』というキーワードを使います。
関数を作ることを「定義する(define)」といいます。
def␣関数名():
␣␣␣␣関数内で実行する処理
def の後に関数名を書きます。
関数名の後には、
その関数で使う「引数」を()内に書きますが、
引数を使う必要がない場合はカッコだけ記述します。
定型メールの文面を作る関数
これまで通り、
プログラムを記述して実行してみましょう。
関数名を「 mail_form 」として、
メールの定型文を自動出力する関数を作ります。
def␣mail_form␣():
␣␣␣␣print('お世話になっております。')
␣␣␣␣print('今月の請求書を送ります。')
関数の呼び出し
定義した関数の呼び出しは、
関数名と引数を()内に書きますが、
引数を使う必要がない場合はカッコだけ記述します。
mail_form()
実行してみましょう。
では次に、
引数を受け取る関数を作ってみましょう。
関数と引数
メールの受信者を『引数』として、
関数の呼び出し時に任意で受信者名を指定することにします。
受信者名の引数を「receiver」とします。
def␣mail_form␣(receiver):
␣␣␣␣print(receiver,'様')
␣␣␣␣print('お世話になっております。')
␣␣␣␣print('今月の請求書を送ります。')
受信者名に「様」を付けて表示する関数とします。
実行すると、
ここまでは理解できましたか?
作った関数を見てみると print 文が3行続いてます。
この関数の中で変数を使って、
よりシンプルに記述してみましょう。
三重クォート文字列
『三重クォート文字列(ヒアドキュメント)』は、
複数行の文字列をまとめるものです。
『’’’(三つのクォート)』で囲んで記述しますが、
改行やスペースも実行結果に反映します。
三重クォート文字列は一行づつ改行て記述しますが、
ブロック内でもインデントしないので注意してください。
これは、
文章で解説するよりも、
実際にプログラミングして実行結果を見た方が理解しやすいです。
今回は、
宛名を引数にすると共に、
請求金額も引数に加えて表示してみます。
三重クォート文字列内に引数を2つ差し込むために、
『format メソッド』を使います。
文字列.format(値1,値2)
format メソッドを使うと、
文字列内の『{ }(フィールド)』の部分に任意の引数を差し込むことができます。
請求金額の引数を「bill」としてプログラミングしてみましょう。
def␣mail_form␣(receiver,bill):
␣␣␣␣temp='''{}様
お世話になっております。
今月の請求額は{}円です。
'''
␣␣␣␣msg=temp.format(receiver,bill)
␣␣␣␣print(msg)
実行してみます。
宛名と請求金額が表示されました。
ここで使った変数『temp』『msg』は、
この関数「mail_form」のブロック内でしか使えません。
これらを『ローカル変数』と呼びます。
そのため、
関数外では使えないので注意してください。
戻り値を返す関数
戻り値を返す「組み込み関数」には、
input や int がありました。
自作の関数では『 return(リターン)文』を使います。
def␣関数名():
␣␣␣␣関数内で実行する処理
␣␣␣␣return␣結果の値
例えば、
請求金額に5%の手数料を上乗せしたい場合の関数を考えます。
def␣add_com(bill):
␣␣␣␣return␣int(bill*1.05)
print(add_com(5000))
ここではまだ、
『関数を作る』ことの利便性には気付かないと思います。
なぜなら、
関数の中に
␣␣␣␣print(bill*1.05)
と記述しても、
同じ結果が得られます。
関数を作って「戻り値」のすることで、
関数同士間で連携が取れる利点があります。
さいごに
ちょっと難しくなってきましたが、
何度も読み直して貰えたら理解できると思います。
今回から『応用編』として解説していますが、
単に「こんな処理もできるんだ」っていうような感じで、
学んでいければいいと思います。
プログラミングとは、
自分が「こうしたい」と考えられれば、
道は開けるものです。
メソッドや文法は覚えなくても、
調べれば見つけられるものです。
つまり、
自分がやりたいことを機械にやらせるだけです。
難しく考えずに「慣れる」ことが大事なのです。
あと数回にわたって【応用編】が続きます。
事実、
プログラムは「記述する」ことよりも前に、
記述されたプログラムを読めるようになる、
言い換えれば「理解できる」ようになることです。
これが「慣れる」ということです。
ではまたお会いしましょう。