def extend_list(v, li=[]): li.append(v) return li list1 = extend_list(10) print(list1) # [10] list2 = extend_list(123, []) print(list2) # [123] list3 = extend_list('a') print(list3) # [10, 'a'] print("-" * 20) print(list1) # [10, 'a'] print(list2) # [123] print(list3) # [10, 'a'] print(list1 is list3) # True
解析
如果默认参数被覆盖重写则不会有任何问题, 因为未被使用
如果默认参数被启用, 则默认参数如果为可变类型, 则只生效一次,
后续的改动都会体现在默认参数中, 相当于默认值被覆盖修改