python之不要在函数中定义可变对象作为默认值

def f(a=[]):
    a.append(len(a)+1)
    print(a)
    print(id(a))


f()
f()


# output:
[1]
140542070277688
[1, 2]
140542070277688

# 参数的默认值只会函数定义的时候初始化一次。
# 函数中的默认值为一个可变对象,对它的操作就和定位了指针地址一样,在内存里进行修改。而如果是不可变对象则会复制一份新的对象。