カテゴリー
Python

関数について知ろう2

この章では関数について説明します。
関数とは引数と言うデータを受け取って、ある一定の処理を行い、戻り値を呼び出し元に返す命令のことを言います。
引数とは関数を実行するときに関数で使われるバラメータ(データ)のことを言います。
戻り値とは、関数を実行した結果、返される値です。
この章以前のint関数のような関数は組み込み関数と言いまして、Pythonによって初めから用意されている関数です。
例えばint関数は文字列を数値に変換する関数ですが、Pythonの内部機構でそのような働きを作ってくれています。
その他に自分で好き勝手に「ある働きを持った関数」を作ることができます。
これをユーザー定義関数と言います。
例えば消費税を自動で計算する関数を自分で作りたいとします。
その場合、商品の代金を関数に渡すと商品金額に消費税率を掛けた処理をして、その結果を返すという機能を持った関数を作ります。
関数の基本構文は以下の通りですが、このように関数の中に実行内容を書いていくことを「関数の定義」と言います。9 〇引数が無い関数もありますが、引数が複数ある場合はカンマで区切ります。9 〇引数が複数ある場合はカンマで区切ります。
〇関数は関数の定義を書いただけでは実行しません。
そこで関数を実行するためには関数を呼び出さなくてはいけません。
関数の呼び出しは9という構文で書きますが、引数が複数ある場合はカンマで区切ります。
引数が必要無い関数であるならば引数は省略出来ます。
引数を省略する場合もカッコを付けて9と記述します。
では実際に関数の例を見てみましょう。9 この関数は三教科の平均を求める関数です。
関数を呼び出すには関数名と同じ名前を付けて呼び出します。
上の例で言えば9の箇所です。
呼び出すことによって関数の中身が実行されます。
では順を追って詳しく説明します。99 引数である変数にはそれぞれ56、45、99が代入されています。
この呼び出し側の引数は実引数と呼ばれています。99 この関数側の引数を仮引数と言います。9 また、実引数と仮引数の変数名が同じでなくても問題ありません。
つまりnum1とe, num2とf, num3とgが 同じ変数名である必要はありません。
また、この関数内部の変数e,f,g,h,iのことをローカル変数と言いますが、このローカル変数は関数内部でしか使用することはできません。
ローカル変数を関数の外で使用するとエラーになります。99 結果は以下の通りです。9 99実行すると次のようなエラーが表示されます。9
次の例をみてみましょう。9 関数には9のように引数に初期値(デフォルト値)を設定することができます。
しかし、初期値は初期値を持たない引数よりも前で
設定してはいけません。
つまり、9のように初期値のある引数を初期値のない引数より前に記述してはいけません。
また、初期値にg=46が設定してあるために、以下のように第三引数を省略して呼び出すことが出来ます。9 結果は次の通りです。9
次の例をみてみましょう。9 例え関数で初期値を設定していても、呼び出し側で引数(実引数)を 設定していればこちらが優先されます。
この例では9の箇所で初期値を設定していますが、9では実引数で3つとも引数を設定しているので、こちらの引数が優先されます。
結果は以下の通りです。9
次は戻り値のある関数についての説明をします。
戻り値についてはこの章の冒頭で説明しましたが、関数を実行した結果、返される値のことです。
戻り値を返すためには関数の定義の中に9という形式で記述します。9
では例をみてみましょう。9 関数内で処理をした結果(戻り値)を呼び出した側に返すにはreturnを使います。returnの後に何かしらの処理があってもその処理は実行されないで、呼び出し元に返りますので注意してください。
つまり9は実行されません。
この戻り値を利用するには例のように変数(この例ではnum4)に戻り値を代入して使用するか、もしくは9のように変数に入れないで、直接出力することもできます。この例では3つの平均点であるiをreturnで呼び出し元に戻してnum4に代入しています。9
次は引数の無い関数について説明します。9 この関数は仮引数も実引数もありません。
ただ関数の中で処理されて、呼び出し元に値を返しているだけです。
このような関数も作成できることを覚えておいてください。9 結果は次の通りです。9
次は関数の引数にはリストも指定することができますので、次の例で説明します。9 リストを関数側に渡すには9のように実引数にリストを指定します。
以下のように書いても同じ意味になります。9 その後、関数側でも仮引数を設定します。
この例の場合はkです。
そのkの要素をfor文で一つ一つ取り出して計算しています。
結果は次の通りです。9
次の例もリストの要素を関数に渡すのですが、前の例はリストそのものを渡していましたが、今回はリストを分解してから関数側に要素を渡しています。9 呼び出し側の実引数であるリストに「*」を付けると、仮引数にはリストの要素が分解した状態で渡るので、仮引数は9のように4つ設定します。
結果は次の通りです。9
次は実引数が複数ある場合、仮引数もその数だけ書くのは大変ですが、この例で便利な方法を紹介します。9 では説明を始めます。
9のように引数が多数ある場合、関数側にも9と、書かなくてはいけないのは面倒です。
そこで、この仮引数を9と、書き替えることで複数の実引数をすべて引き受けることが出来ます。99 はタプルとして、9のように受け取るので、for文で分解することが出来ます。
結果は108です。

次は関数の引数にはディクショナリも指定することができますので、次の例で説明します。9 ディクショナリを関数側に渡すには9のように引数にディクショナリを指定します。
その後、関数側でも引数を設定します。この例の場合はaです。
そのaの要素をfor文で一つ一つ取り出して計算します。
for文ではディクショナリの値だけを使いたいので、keysメソッドでキーを取得して、その後に9という構文で値を得ます。
結果は33です。