1. TOP
  2. プログラム
  3. ソフト
  4. python
  5. デフォルト引数値

デフォルト引数値

値が計算される時

函数が実行された時ではなく、定義された時、デフォルト引数の価が計算される
よく犯す誤りは、リストや辞書などのミュータブルなデーター型をデフォルト引数値にして使ってしまうことです。

 

バグがあるコード

def buggy(arg, result=[]):
result.append(arg)
print(result)

buggy('a')

['a']

buggy('b') #['b']を期待しているはず。

['a', 'b']

正しい動作をさせる その1

def works(arg):
result = []
result.append(arg)
return result

works('a')

['a']

works('b')

['b']

別の正しいもの

def nonbuggy(arg, result=None):
if result is None:
result = []
result.append(arg)
print(result)

nonbuggy('a')

['a']

nonbuggy('b')

['b']