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)
點評:Python函數在定義的時候,默認參數items的值就被計算出來了,即[]。因為默認參數 items引用了對象[],每次調用該函數,如果對items引用的列表進行了操作,下次調用時,默認參數還是引用之前的那個列表而不是重新賦值為[],所以列表中會有之前添加的元素。
如果通過傳參的方式為items重新賦值,那么items將引用到新的列表對象,而不再引用默認的那個列表對象。 [10, 'a'] [123] [10, 'a']