0 python
所以我有一个辅助函数,它应该打印出二叉树(未排序)的内部节点和叶子。因为我在上课,所以我不会提供代码,但我可以告诉你,我已经对它进行了编码,它适用于我在那里投入的第一个节点:
def helper(root, internals=[], leaves=[]):
#function code here...
>>> helper(node)
([13, 14, 27], [10, 11, 12, 17, 19])
Run Code Online (Sandbox Code Playgroud)
据我所知,这是正确的输出。但是,当我在另一个节点上再次调用相同的函数时,输出被覆盖到前一个:
>>> helper(pen)
([13, 14, 27, 6, 8, 14], [10, 11, 12, 17, 19, 2, 4, 10, 12])
Run Code Online (Sandbox Code Playgroud)
这是不正确的,因为树pen没有元素 13、14、27 或 10、11、12、17、19。有人可以解释这里发生了什么吗?我必须针对不同情况测试我的函数,而无需每次都重新启动 shell。我该如何解决?
当遇到函数定义时,即当 Python 看到该def行时,将评估默认参数。然后它们被绑定到函数本身。
使用可变默认参数,绑定到函数的默认参数可能会改变,这会导致一些相当令人惊讶的结果。
通常的建议:None用作默认值,并根据需要创建实际默认值:
def foo(bar=None):
if bar is None:
bar = []
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2035 次 |
| 最近记录: |