Python デフォルト引数、キーワード引数の使い方

デフォルト引数

引数にデフォルト値を設定できます。関数を使うときデフォルト引数は省略できます。

以下の例では、timesに1, msgに’高級’というデフォルト値をセットしています。関数を呼ぶときにデフォルト引数を省略すると、デフォルト値が使われていることがわかります。

def comment(item, times=1, msg='高級'):
    for i in range(times):
        print(item + msg)

comment('りんご',2,'美味しい')
comment('いちご',3)
comment('バナナ')

【結果】

りんご美味しい
りんご美味しい
いちご高級
いちご高級
いちご高級
バナナ高級

デフォルト値がリストや辞書型の場合の注意

デフォルト値の評価は1度だけです。

デフォルト引数がリストやディクショナリの場合は、使い回されます。デフォルト値として使う場合以下のような工夫が必要です。

def add(a, l=None):
    if l is None:
        l = [3,6] #ここでデフォルト値をセットする
        l.append(a)
    return l

r1 = add(9)
r2 = add(12)

print(r1)
print(r2)

【結果】

[3, 6, 9]
[3, 6, 12]

引数のキーワード指定 キーワード引数

関数の引数にキーワードを指定して使うことができます。

キーワードは関数を定義した時の引数名です。

def status(name, item='薬草', magic='ファイア'):
    print('名前:',name,'アイテム:',item, '魔法:',magic)

status('Ken')
status('Ken',magic='ブリザド')
status(name='Ren',magic='アルテマ')

【結果】

名前: Ken アイテム: 薬草 魔法: ファイア
名前: Ken アイテム: 薬草 魔法: ブリザド
名前: Ren アイテム: 薬草 魔法: アルテマ
スポンサーリンク
スポンサーリンク