Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。修改一下试试
def f(a, L=[]):
L = L or []
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3, [4]))
因为L不是每次调用都是[ ],第一次后变为[1],第二次变为[1,2],第三次变为[1,2,3]
所以返回值越来越长,请问回答了你的问题吗?
append()并不创建新的列表,就像排队一样,假设一个队伍,起名叫L,那么每运行一次L.append(a),就好比在队伍最后多排一个人,但是队伍的名字还是叫L,而且多了一个人,除非你用L=[另一个队伍],把L这个名字给另外一个队