拉尔斯曼人回答了您的第一个问题
它不起作用,因为默认参数是在函数定义时而不是在调用时求值的:
def f(lst = []):
lst.append(1)
return lst
print(f()) # prints [1]
print(f()) # prints [1, 1]
常见的策略是使用None默认参数。如果None是有效值,请使用单例哨兵:
NOTHING = object()
def f(arg = NOTHING):
if arg is NOTHING:
# no argument
# etc.
对于第二个问题,您能否在跳转之前简单地看一下以避免递归?
def makeList(self, aNode=None):
if aNode is None:
aNode = self.root
treeaslist = [aNode.data]
if aNode.lChild:
treeaslist.extend(self.makeList(aNode.lChild))
if aNode.rChild:
treeaslist.extend(self.makeList(aNode.rChild))
return treeaslist