我试图理解这个问题和答案:
python function default parameter is evaluated only once?
为了理解它我尝试:
def f1(a, L=[]):
if not L:
print "L is empty"
L = []
L.append(a)
return L
>>>f1(1)
L is empty
[1]
>>>f1(1)
L is empty
[1]
def f2(a, L=[]):
if L:
print "L isn't empty"
L = []
L.append(a)
return L
>>>f2(1)
[1]
>>>f2(1)
L isn't empty
[1]
所以我认为,f1
L
每次都会变空 - 每次调用[]
后都会再次分配给f1
。但是,如果f2
L
在某种程度上不是空的?为什么呢?