python为什么这样输出,print 是一个参数,而def定义,是两个参数,怎么传递的??

def f(a, L=[]): L.append(a) return Lprint(f(1))print(f(2))print(f(3))
2024年11月30日 00:35
有3个网友回答
网友(1):

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]))

网友(2):

因为L不是每次调用都是[ ],第一次后变为[1],第二次变为[1,2],第三次变为[1,2,3]
所以返回值越来越长,请问回答了你的问题吗?

网友(3):

append()并不创建新的列表,就像排队一样,假设一个队伍,起名叫L,那么每运行一次L.append(a),就好比在队伍最后多排一个人,但是队伍的名字还是叫L,而且多了一个人,除非你用L=[另一个队伍],把L这个名字给另外一个队