Python中:def func(a,b=[]) 这种写法有什么坑?
def func(a,b=[]) 有什么陷阱?
def func(a,b=[]):
b.append(a)
return b
l1 = func(1)
l2 = func(2,[11,22])
l3 = func(3)
print(l1,l2,l3)
#执行结果: [1,3] [11,22,2] [1,3]
函数的第二个默认参数是一个list,当第一次执行的时候实例化了一个list,第三次执行还是用第一次执行的时候实例化的地址存储,所以第一和第三次执行的结果就是相同的,想每次执行只输出当前传入参数 ,默认参数应该设置为None。
下面这种情况:
def func(a,b=[]):
b.append(a)
print(b)
func(1)
func(2,[11,22,33])
func(3)
#执行结果: [1] [11,22,33,2] [1,3] ###此时每个func函数是立即打印所以会出现不同结果