假设一个具有可变默认参数的函数:
def f(l=[]):
l.append(len(l))
return l
如果我运行这个:
def f(l=[]):
l.append(len(l))
return l
print(f()+["-"]+f()+["-"]+f()) # -> [0, '-', 0, 1, '-', 0, 1, 2]
或这个:
def f(l=[]):
l.append(len(l))
return l
print(f()+f()+f()) # -> [0, 1, 0, 1, 0, 1, 2]
而不是以下更合乎逻辑的:
print(f()+f()+f()) # -> [0, 0, 1, 0, 1, 2]
为什么?