Python入門:様々な引数
キーワード引数
まず、キーワード引数を説明する前に関数の定義方法と関数を呼び出す方法をおさらいしましょう。
関数が呼び出された時の処理
引数の数は自由で、なくてもかまいません。
引数を呼び出すときは、実引数が仮引数に置き換わって処理されます。
キーワード引数は、関数を呼び出すときに仮引数と実引数の両方を使います。
キーワード引数を使わないときは実引数が前から順番に仮引数に代入しますが、キーワード引数を使うことで、実引数と仮引数を直接紐づけることができます。
def add(num1,num2,num3) :
print(num1+num2+num3)
#キーワード引数で呼び出し
add(num1=3, num2=2, num3=5)
#順番を変えてもOK
add(num2=2, num1=3, num3=5)
10
10
デフォルト引数
デフォルト引数を使うと、仮引数のデフォルト値を指定して関数を定義することができます。
関数が呼び出された時の処理
デフォルト引数と普通の仮引数は同じ関数内で指定できます。また、デフォルト引数は関数を呼び出すときに実引数を省略することができます。そのため、デフォルト引数の後ろに普通の仮引数を書くと構文エラーになります。
#仮引数にデフォルト引数を設定(普通の仮引数の前には書かない)
def minus(num1,num2=0,num3=0) :
print(num1-num2-num3)
#デフォルト引数は省略可能
minus(4,2)
minus(5)
2
5
可変長引数
可変長引数を使うと、一つの仮引数に複数の実引数の値を代入することができます。
関数が呼び出された時の処理
可変長引数は仮変数の前に「*」または「**」を書きます。
「*」の場合は、仮変数は関数のブロックの中でタプルとして扱われます。
#可変長引数argsはタプルとなる
def add(*args) :
print(sum(args))
#実引数はいくつでも指定可能
add(1,2,3,4)
add(5,5,5)
10
15
「**」の場合は、仮変数は関数のブロックの中でディクショナリとして扱われます。また、関数を呼び出すときにはキーワード引数を使います。
#可変長引数kwargsはディクショナリとなる
def dictionary(**kwargs) :
print(kwargs)
#キーワード引数で指定
dictionary(tomato="トマト",carrot="人参",cake="ケーキ")
{'tomato': 'トマト', 'carrot': '人参', 'cake': 'ケーキ'}
上のコードのように、「**」のついた可変長引数はキーワード引数をまとめてディクショナリに置き換わります。
練習問題
では、これまでの内容をもとに次のプログラムを作ってみましょう!
- print関数には、endという仮引数が定義されており、デフォルト値として"\n"が設定されています。この引数は出力内容の後ろにつけられます。
このことを踏まえて、print関数を使って改行せずに出力する。 - 複数の引数を指定でき、指定した引数の平均値が返ってくる関数を作成する。
解答例※あくまで一例です。
(1)
print("改行",end="")
print("せずに",end="")
print("出力",end="")
改行せずに出力
(2)
def average(*args) :
return sum(args)/len(args)
print(average(3,6,9,5))
5.75
最後に
この記事では、キーワード引数、可変引数について解説しました。
もっとPythonを学びたい!という方はこちらの記事でPythonの基本的な構文を学習することが出来ますのでぜひ立ち寄ってみてください!