【发布时间】:2015-03-15 15:54:29
【问题描述】:
我正在尝试理解这个问题和答案:
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 不知何故不为空?为什么?
【问题讨论】:
-
也许你可以让 L 成为一个全局列表?
-
我可以,但不想要。我只想了解为什么这个函数的行为如此奇怪
标签: python