如果将一个列表作为默认参数传递给函数,在函数内部对列表操作后会怎样呢?我们看下面的代码: def func(L=[]): L.append(1) return L print func() print func() print func() 函数func()接受一个参数,这个参数的默认值是个空列表,在函数体里这个空列表被追加一个元素1,函数最后返回这个列表。当3个完全相同的函数被执行3次后,返回值会是怎么样?结果是 [1] [1, 1] [1, 1, 1] 这是因为函数的默认参数只运算一次,如果这个默认参数是可变的,那么这个参数的变化就会在函数每次被调用时积累下来。 作为对比,如果代码改为: def func(): L=[] L.append(1) return L print func() print func() print func() 结果就变成 [1] [1] [1]