可能重複:
「Least Astonishment」 in Python: The Mutable Default Argument無法初始化參數列表中的字典?
我有奇怪的行爲有以下幾點: -
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 = {}
(Python 2.7版)
作爲旁白,您應該使用:'if x is None:x = {}' –