重複の可能性:
Python の「最小の驚き」: 変更可能な既定の引数
私は次のような奇妙な振る舞いをしています:-
def set_diary_time_data(day_str, x={}):
# Dict for template in html
print 'Set diary time data'
print x
この関数を次のように呼び出します:-
x = heading_queries.set_diary_time_data(day_str)
したがって、辞書 x はパラメーターとして渡されないため、{} に初期化する必要があります。
ただし、この関数を繰り返し呼び出すと、x に配置された値は以前の呼び出しから保持されます。これは django にあり、ユーザーがログインしたときに呼び出されます。以前のユーザーの詳細は x に保持されます。(x はグローバル変数として設定されません。)
関数を次のように変更することでこれを克服できます
def set_diary_time_data(day_str, x=None):
if not x: x = {}
(パイソン2.7)