def extend_list(val, items=[]): items.append(val) return items list1 = extend_list(10) list2 = extend_list(123, []) list3 = extend_list('a') print(list1) print(list2) print(list3)
點(diǎn)評:Python函數(shù)在定義的時(shí)候,默認(rèn)參數(shù)items的值就被計(jì)算出來了,即[]。因?yàn)槟J(rèn)參數(shù) items引用了對象[],每次調(diào)用該函數(shù),如果對items引用的列表進(jìn)行了操作,下次調(diào)用時(shí),默認(rèn)參數(shù)還是引用之前的那個列表而不是重新賦值為[],所以列表中會有之前添加的元素。
如果通過傳參的方式為items重新賦值,那么items將引用到新的列表對象,而不再引用默認(rèn)的那個列表對象。 [10, 'a'] [123] [10, 'a']