デフォルト引数
引数にデフォルト値を設定できます。関数を使うときデフォルト引数は省略できます。
以下の例では、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 アイテム: 薬草 魔法: アルテマ
コメントを残す