Python勉強会~関数編②~

どうも!リョクちゃです。
今回は、関数に渡す引数について紹介していきます。
前回は関数の書き方・作り方について紹介しました。
Pythonにおける関数は、defで定義することで作ることができましたね。

ちなみに前回の記事はこちら

Pythonにおける関数の作り方(定義の仕方)を簡単に紹介しています。関数を覚えると、コードの可読性向上にもつながったり、問題が起きている場所の特定が容易になったり、再度利用することに対する利便性向上といった様々なメリットがあります。



スポンサーリンク




引数とは……?

関数やメソッドを呼び出すときに渡す値のことを指します。

引数(ひきすう)と読まれ、関数外部との値のやり取りができることから、
特別な変数として扱われます。

ちなみに英語では、argumentと書かれます。

引数の種類

Pythonでは、主に以下に示す引数があります。

  • 可変長引数
  • デフォルト引数
  • キーワード引数

これらについて順に解説していきます。

可変長引数(かへんちょうひきすう)

可変長引数は、関数へ渡したい値が固定ではないときに利用ができます。
たとえば、配列やリストのように中身が固定ではない値を渡すときに使用できます。

では、実際に可変長引数を関数に与える場合の書き方を下に示します。

関数personの引数*namesに注目してください。
よく見ると引数の先頭に*(アスタリスク)が付いています。

そうです、これが可変長引数を表すのです。

そして可変長引数は、引数の中でも必ず最後に記述します。
そうでない場合、エラーとなってしまいます。

順番を逆にした場合、下に示すようなエラーが出ます。

引数として設定した、*namesは以下の図の部分に当てはまります。

ちなみに……

*(アスタリスク)を2個つけることで、辞書型専用の可変長引数にすることができます。

以下、例を示します。

こんなイメージになります。

可変長引数は使えるようになったら便利なので、覚えてください。



デフォルト引数

関数の引数に初期値が与えてある引数をデフォルト引数といいます。

VB.Netでいえば、引数を割り当てる際のOptional Byval <変数名> as <型名> = <初期値>
のイメージです。

下に例を示します。

下のようなイメージになります。

あらかじめ関数に渡した引数に値が代入されている変数をデフォルト引数といいます。

一方で、

これを実行すると、

こんにちは World

はじめまして 赤ちゃん

good morning World

とそれぞれ出力がされます。

デフォルト引数は、デフォルト値がない引数よりも後に記述をしなくてはいけません。
Pythonでは、引数とパラメータ位置を基準に対応付けがされているからです。

コードで書くと、下のようになります。

キーワード引数

関数の引数として定義された単語(変数)をキーワード引数といいます。

キーワード引数を指定して、値を割り当てることができます。

イメージを参考に使うと、下のようになります。

それぞれ説明すると、

このようになります。

まとめ

<可変長引数>

変数の前に*もしくは**を付けて宣言する。

*で配列やリスト

**で辞書

<デフォルト引数>

関数の引数に初期値が与えてある引数

<キーワード引数>

関数の引数として定義された変数を

Pythonのデフォルト引数とキーワード渡しの組み合わせは非常に便利。

引数には順番があります。

  1. 引数
  2. キーワード引数(orデフォルト引数)
  3. 可変長引数

この順番でないと、エラーが起きてしまうので注意!!

スポンサーリンク




スポンサーリンク
スポンサーリンク