我使用Python 2.7进行编程已有一段时间了,但是当我使用递归函数时,我发现了一些奇怪的东西。谁能告诉我原因吗?您会看到我在定义“ mult3”函数的地方输入了“ l”的默认值。
def mult3(l1,l2,i=0,l=[]):
if len(l1)!=len(l2):
print "error: dimension incompatibility"
return "error: operation cannot be done"
else:
if len(l1)==1:
l.append(l1[0]*l2[0])
#comment
return l
else:
l.append(l1[0]*l2[0])
del(l1[0])
del(l2[0])
return mult3(l1,l2,i+1)
a=mult3([1,2],[2,3])
b=mult3([2,3],[4,5])
print a,b
#-----
然后输出为:
[2,6,8,15] [2,6,8,15]
如果我删除了b=mult3([2,3],[4,5])
部分,那么我会为a
得到正确的答案,
[2,6]
或者如果我用以下代码替换#comment行:
l=list(l)
然后我会得到这个答案:
[2,6] [2,6,8,15]
似乎我第二次调用函数“ mult3”时,它没有将列表“ l”设置为“ []”。但是为什么呢?