Python: 関数...デフォルト引数...引数のキーワード指定...可変長引数
Python 独習ノート
引数にデフォルト値を指定
仮引数にデフォルト値を指定すると、実引数の入力を省略できる。
def 関数名(引数1, 引数2, 引数2 = デフォルト値, … ):
処理
return 戻り値
- 関数呼び出しで実引数が指定されない場合は、デフォルト値が指定されたものとみなされる。
- デフォルト値を指定した以降の仮引数もデフォルト値の指定が必要になる。
def eat(fujihira, yoshida, aritomo, mori='カレー'):
print('藤平さんは{}を、吉田さんは{}を、有友さんは{}を、そして森さんは{}を食べました。'.format(fujihira, yoshida, aritomo, mori))
eat('ピザ', 'サンドイッチ', 'マック')
実行結果
藤平さんはピザを、吉田さんはサンドイッチを、有友さんはマックを、そして森さんはカレーを食べました。
※実引数を3つしか指定していないので、4つめの仮引数にはデフォルト値の「カレー」が代入されている。
引数にキーワード指定した関数の呼び出し
関数名(仮引数名1=実引数1, 仮引数名2=実引数2, …)
def eat(fujihira, yoshida, aritomo='うどん', mori='すし'):
print('藤平さんは{}を、吉田さんは{}を、有友さんは{}を、そして森さんは{}を食べました。'.format(fujihira, yoshida, aritomo, mori))
eat('ピザ', 'カレー', mori='マック')
実行結果
藤平さんはピザを、吉田さんはカレーを、有友さんはうどんを、そして森さんはマックを食べました。
※3つ目の実引数が "aritomo" ではなく、キーワードを指定した仮引数 "mori" に引き渡されている。
可変長引数
def 関数名(仮引数名1, 仮引数名2, 仮引数名3, *仮引数名n):
- 末尾の仮引数に「*」をつけると、複数の実引数を1つのタプルとして受け取ることができる。(上の例だと4つ以上の実引数を受け取ることができる。)
- n番目の実引数が省略された場合、関数は空のタプルを受け取る。
def eat(may, asa, *mana):
print('Y田さんは{}を、K林さんは{}を食べました。'.format(may, asa))
for data in mana:
print('F本さんは{}を食べました。'.format(data))
eat('ピザ', 'カレー', 'マック', 'すし', 'うどん', '牛丼')
実行結果
Y田さんはピザを、K林さんはカレーを食べました。
F本さんはマックを食べました。
F本さんはすしを食べました。
F本さんはうどんを食べました。
F本さんは牛丼を食べました。
続く....