最近碰到一些python的小知识点,容易错的地方
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具体的实现机制我还是不太清楚,希望有知道的网友帮忙解答一下。