求下面代码的输出结果
def fun(val,list=[]):
list.append(val)
# print(id(list))
return list
data1 = fun(10)
data2 = fun(123,[])
data3 = fun('a')
print(data1)
print(data2)
print(data3)
解释:当函数中的变量被默认为一个可变数据类型时,如果在调用的时侯不为其传参,则这个参数的地址将不会改变,如果为其传入参数则地址会发生改变,所以在最后一次调用的时候没有传入对应的参数则列表的数据依然是[10],故第三次调用后会发生data1中数据会发生变化的现象。