1.第一个问题
def getParents(child,parents=[]):
if child:
parents.append(child)
return getParents(child-1,parents)
else:
return parents
# import pdb
# pdb.set_trace()
print getParents(5)
结果是:[5, 4, 3, 2, 1]
2.加上一行:
def getParents(child,parents=[]):
if child:
parents.append(child)
return getParents(child-1,parents)
else:
return parents
# import pdb
# pdb.set_trace()
print getParents(5)
print getParents(3)
结果是:
[5, 4, 3, 2, 1]
[5, 4, 3, 2, 1, 3, 2, 1]
我觉得原因是:
parent=[],这里的parent保存的是[]这个列表list的一个引用。当我们执行一次函数后,parents所引用的内存中的值会发生改变。
python具体的实现机制我还是不太清楚,希望有知道的网友帮忙解答一下。